diff --git a/CHANGELOG.md b/CHANGELOG.md index 817b6e5..383f42f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,8 @@ Le format est basé sur [Keep a Changelog](https://keepachangelog.com/) et ce pr ## [Unreleased] ### Added - Possibilité de définir un timeout via la variable d'environnement `ROK4_NETWORK_TIMEOUT` (valeur à fournir en seconde) pour les intéraction avec le stockage Swift ou S3 +- Ajout de diagrammes pour comprendre l'usage des classes Image dans les différents outils +- Amélioration de la documentation Doxygen ### Changed - Refonte du CHANGELOG au format [Keep a Changelog](https://keepachangelog.com/) diff --git a/CMakeLists.txt b/CMakeLists.txt index bf22fcb..49e685d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -88,15 +88,18 @@ if(DOC_ENABLED) set(DOXYGEN_OUTPUT_LANGUAGE french) set(DOXYGEN_INPUT_ENCODING UTF-8) set(DOXYGEN_IMAGE_PATH docs/images) + set(DOXYGEN_EXAMPLE_PATH docs/diagrams) set(DOXYGEN_RECURSIVE YES) + set(DOXYGEN_PROJECT_NAME "Suite d'outils de génération ROK4") set(DOXYGEN_GENERATE_HTML YES) set(DOXYGEN_GENERATE_LATEX NO) - set(DOXYGEN_USE_MDFILE_AS_MAINPAGE docs/main.doxygen.md) + set(DOXYGEN_ALIASES mermaid{1}=\"@htmlonly
^^ @endhtmlonly @htmlinclude \\\"\\1.mmd\\\" @htmlonly ^^
@endhtmlonly\") set(DOXYGEN_GENERATE_TREEVIEW YES) - set(DOXYGEN_DISABLE_INDEX NO) + set(DOXYGEN_DISABLE_INDEX YES) set(DOXYGEN_HAVE_DOT NO) set(DOXYGEN_FULL_SIDEBAR NO) set(DOXYGEN_HTML_HEADER docs/doxygen/header.html) + set(DOXYGEN_HTML_FOOTER docs/doxygen/footer.html) set(DOXYGEN_HTML_EXTRA_STYLESHEET ${CMAKE_CURRENT_SOURCE_DIR}/docs/doxygen/doxygen-awesome.css) set(DOXYGEN_HTML_COLORSTYLE LIGHT) diff --git a/docs/diagrams/cache2work.mmd b/docs/diagrams/cache2work.mmd new file mode 100644 index 0000000..2a68ab6 --- /dev/null +++ b/docs/diagrams/cache2work.mmd @@ -0,0 +1,21 @@ +--- +config: + theme: neutral + flowchart: + htmlLabels: false +--- + +flowchart TB + img1@{ shape: proc, label: "Rok4Image"} + img1_notes@{ shape: braces, label: "image en entrée +en lecture"} + img1 -.- img1_notes + + img2@{ shape: proc, label: "FileImage"} + img2_notes@{ shape: braces, label: "image en sortie +en écriture"} + img2 -.- img2_notes + + img1 write@-- est lue ligne par ligne pour écrire --> img2 + write@{ animate: true } + diff --git a/docs/diagrams/checkWork.mmd b/docs/diagrams/checkWork.mmd new file mode 100644 index 0000000..4db535a --- /dev/null +++ b/docs/diagrams/checkWork.mmd @@ -0,0 +1,14 @@ +--- +config: + theme: neutral + flowchart: + htmlLabels: false +--- + +flowchart TB + img1@{ shape: proc, label: "FileImage"} + img1_notes@{ shape: braces, label: "image en entrée +en lecture +si la création est en succès, la commande sort en succès"} + img1 -.- img1_notes + diff --git a/docs/diagrams/composeNtiff.mmd b/docs/diagrams/composeNtiff.mmd new file mode 100644 index 0000000..8701f91 --- /dev/null +++ b/docs/diagrams/composeNtiff.mmd @@ -0,0 +1,27 @@ +--- +config: + theme: neutral + flowchart: + htmlLabels: false +--- + +flowchart TB + img1@{ shape: proc, label: "FileImage"} + img1_notes@{ shape: braces, label: "1 par image en entrée +en lecture"} + img1 -.- img1_notes + + img2@{ shape: proc, label: "CompoundImage"} + + img2 --> img1 + + img8@{ shape: proc, label: "FileImage"} + img8_notes@{ shape: braces, label: "image en sortie +en écriture"} + img8 -.- img8_notes + + img2 write@-- est lue ligne par ligne pour écrire --> img8 + write@{ animate: true } + + classDef optionnal stroke-dasharray: 5 5; + class img5,img4 optionnal diff --git a/docs/diagrams/decimateNtiff.mmd b/docs/diagrams/decimateNtiff.mmd new file mode 100644 index 0000000..1cf3d02 --- /dev/null +++ b/docs/diagrams/decimateNtiff.mmd @@ -0,0 +1,39 @@ +--- +config: + theme: neutral + flowchart: + htmlLabels: false +--- + +flowchart TB + img1@{ shape: proc, label: "FileImage"} + img1_notes@{ shape: braces, label: "1 par image en entrée à décimer +en lecture +avec un éventuel convertisseur"} + img1 -.- img1_notes + + img2@{ shape: proc, label: "FileImage"} + img2_notes@{ shape: braces, label: "1 pour l'image de fond +en lecture"} + img2 -.- img2_notes + + img3@{ shape: proc, label: "ExtendedCompoundImage"} + + img4@{ shape: proc, label: "DecimatedImage"} + img4 --> img3 --> img1 + + img5@{ shape: proc, label: "ExtendedCompoundImage"} + + img5 --> img4 + img5 -- si il y a un fond --> img2 + + img8@{ shape: proc, label: "FileImage"} + img8_notes@{ shape: braces, label: "image en sortie +en écriture"} + img8 -.- img8_notes + + img5 write@-- est lue ligne par ligne pour écrire --> img8 + write@{ animate: true } + + classDef optionnal stroke-dasharray: 5 5; + class img2 optionnal diff --git a/docs/diagrams/manageNodata.mmd b/docs/diagrams/manageNodata.mmd new file mode 100644 index 0000000..625d108 --- /dev/null +++ b/docs/diagrams/manageNodata.mmd @@ -0,0 +1,35 @@ +--- +config: + theme: neutral + flowchart: + htmlLabels: false +--- + +flowchart TB + + subgraph tnm["TiffNodataManager"] + direction TB + + img1@{ shape: proc, label: "FileImage"} + img1_notes@{ shape: braces, label: "1 seul image en entrée + en lecture"} + img1 -.- img1_notes + + proc{{determine les pixels de nodata}} + + img1 write1@-- est lue en entier --> proc + write1@{ animate: true } + + img8@{ shape: proc, label: "FileImage"} + img8_notes@{ shape: braces, label: "image en sortie + en écriture"} + img8 -.- img8_notes + + proc write2@-- donnée bufferisée écrite --> img8 + write2@{ animate: true } + + end + + + classDef optionnal stroke-dasharray: 5 5; + class img2 optionnal diff --git a/docs/diagrams/merge4tiff.mmd b/docs/diagrams/merge4tiff.mmd new file mode 100644 index 0000000..b2a7bb4 --- /dev/null +++ b/docs/diagrams/merge4tiff.mmd @@ -0,0 +1,45 @@ +--- +config: + theme: neutral + flowchart: + htmlLabels: false +--- + +flowchart TB + img1@{ shape: proc, label: "FileImage"} + img1_notes@{ shape: braces, label: "1 par image de coin en entrée +jusqu'à 4 +en lecture +avec un éventuel convertisseur"} + img1 -.- img1_notes + + img2@{ shape: proc, label: "ExtendedCompoundImage"} + img3@{ shape: proc, label: "SubsampledImage"} + + img3 --> img2 --> img1 + + img5@{ shape: proc, label: "MergeImage"} + img4@{ shape: proc, label: "FileImage"} + img4_notes@{ shape: braces, label: "1 seule pour l'image de fond +en lecture"} + img4 -.- img4_notes + img5 --> img4 + img5 --> img3 + + input{Au choix} + + + img8@{ shape: proc, label: "FileImage"} + img8_notes@{ shape: braces, label: "image en sortie +en écriture"} + img8 -.- img8_notes + + input write1@-- est lue ligne par ligne pour écrire --> img8 + img3 write2@-- si pas de fond fourni --> input + img5 write3@-- si un fond est fourni --> input + write1@{ animate: true } + write2@{ animate: true } + write3@{ animate: true } + + classDef optionnal stroke-dasharray: 5 5; + class img5,img4 optionnal diff --git a/docs/diagrams/mergeNtiff.mmd b/docs/diagrams/mergeNtiff.mmd new file mode 100644 index 0000000..9f6c603 --- /dev/null +++ b/docs/diagrams/mergeNtiff.mmd @@ -0,0 +1,75 @@ +--- +config: + theme: neutral + flowchart: + htmlLabels: false +--- + +flowchart TB + img1@{ shape: proc, label: "FileImage"} + img1_notes@{ shape: braces, label: "1 par image en entrée +en lecture +avec un éventuel convertisseur"} + img1 -.- img1_notes + + subgraph paquet[" "] + direction TB + img2@{ shape: proc, label: "MirrorImage"} + img2_notes@{ shape: braces, label: "4 par image en entrée + si reprojection ou réechantillonnage"} + img2 -.- img2_notes + + img3@{ shape: proc, label: "ExtendedCompoundImage"} + img3_notes@{ shape: braces, label: "1 par paquet d'image en entrée compatibles entre elles"} + img3 -.- img3_notes + + subgraph styled["Si un style est appliqué"] + direction TB + subgraph img4["Au choix"] + direction LR + img41@{ shape: proc, label: "EstompageImage"} + img42@{ shape: proc, label: "PenteImage"} + img43@{ shape: proc, label: "AspectImage"} + img41 ~~~ img42 ~~~ img43 + end + img4_notes@{ shape: braces, label: "Si le style contient une section associée"} + img4 -.- img4_notes + + img5@{ shape: proc, label: "PaletteImage"} + img5_notes@{ shape: braces, label: "Si le style contient une palette non vide"} + img5 -.- img5_notes + end + + subgraph img6["Au choix"] + direction LR + img61@{ shape: proc, label: "None"} + img62@{ shape: proc, label: "ResampledImage"} + img63@{ shape: proc, label: "ReprojectedImage"} + end + end + paquet_notes@{ shape: braces, label: "Par paquet d'images en entrée compatibles entre elles"} + paquet -.- paquet_notes + + img7@{ shape: proc, label: "ExtendedCompoundImage"} + + img3 -- en fin des images sources --> img1 + img3 -- en tête des images sources --> img2 --> img1 + img5 --> img4 + styled --> img3 + + img7 -- "Si le paquet d'images en entrée est en phase avec la sortie" --- img61 + img7 -- "Si le paquet d'images en entrée a la même projection que la sortie déphasé" --> img62 + img7 -- "Si le paquet d'images en entrée a une projection différente de la sortie" --> img63 + img6 --> styled + + img8@{ shape: proc, label: "FileImage"} + img8_notes@{ shape: braces, label: "image en sortie +en écriture"} + img8 -.- img8_notes + + img7 write@-- est lue ligne par ligne pour écrire --> img8 + write@{ animate: true } + + classDef optionnal stroke-dasharray: 5 5; + class img2,img41,img42,img43,img5,styled optionnal + class img61 invisible diff --git a/docs/diagrams/overlayNtiff.mmd b/docs/diagrams/overlayNtiff.mmd new file mode 100644 index 0000000..017009d --- /dev/null +++ b/docs/diagrams/overlayNtiff.mmd @@ -0,0 +1,27 @@ +--- +config: + theme: neutral + flowchart: + htmlLabels: false +--- + +flowchart TB + img1@{ shape: proc, label: "FileImage"} + img1_notes@{ shape: braces, label: "1 par image en entrée +en lecture"} + img1 -.- img1_notes + + img2@{ shape: proc, label: "MergeImage"} + + img2 --> img1 + + img8@{ shape: proc, label: "FileImage"} + img8_notes@{ shape: braces, label: "image en sortie +en écriture"} + img8 -.- img8_notes + + img2 write@-- est lue ligne par ligne pour écrire --> img8 + write@{ animate: true } + + classDef optionnal stroke-dasharray: 5 5; + class img2 optionnal diff --git a/docs/diagrams/pbf2cache.mmd b/docs/diagrams/pbf2cache.mmd new file mode 100644 index 0000000..d3f2fb1 --- /dev/null +++ b/docs/diagrams/pbf2cache.mmd @@ -0,0 +1,24 @@ +--- +config: + theme: neutral + flowchart: + htmlLabels: false +--- + +flowchart TB + + pbf[[ifstream]] + pbf_notes@{ shape: braces, label: "1 par tuile PBF en entrée +en lecture"} + pbf -.- pbf_notes + + img8@{ shape: proc, label: "Rok4Image"} + img8_notes@{ shape: braces, label: "image en sortie +en écriture"} + img8 -.- img8_notes + + pbf write@-- est lue en entier pour écrire tuile par tuile --> img8 + write@{ animate: true } + + classDef optionnal stroke-dasharray: 5 5; + class img2 optionnal diff --git a/docs/diagrams/work2cache.mmd b/docs/diagrams/work2cache.mmd new file mode 100644 index 0000000..06dd6f8 --- /dev/null +++ b/docs/diagrams/work2cache.mmd @@ -0,0 +1,22 @@ +--- +config: + theme: neutral + flowchart: + htmlLabels: false +--- + +flowchart TB + img1@{ shape: proc, label: "FileImage"} + img1_notes@{ shape: braces, label: "image en entrée +en lecture +avec un éventuel convertisseur"} + img1 -.- img1_notes + + img2@{ shape: proc, label: "Rok4Image"} + img2_notes@{ shape: braces, label: "image en sortie +en écriture"} + img2 -.- img2_notes + + img1 write@-- est lue ligne par ligne pour écrire --> img2 + write@{ animate: true } + diff --git a/docs/doxygen/doxygen-awesome.css b/docs/doxygen/doxygen-awesome.css index e8399cb..f35e4bf 100644 --- a/docs/doxygen/doxygen-awesome.css +++ b/docs/doxygen/doxygen-awesome.css @@ -1985,6 +1985,8 @@ hr { .contents img, .contents .center, .contents center, .contents div.image object { max-width: 100%; overflow: auto; + margin-top: 20px; + margin-bottom: 20px; } @media screen and (max-width: 767px) { diff --git a/docs/doxygen/footer.html b/docs/doxygen/footer.html new file mode 100644 index 0000000..552ff3f --- /dev/null +++ b/docs/doxygen/footer.html @@ -0,0 +1,12 @@ + + \ No newline at end of file diff --git a/docs/doxygen/header.html b/docs/doxygen/header.html index 2f0967f..0758d15 100644 --- a/docs/doxygen/header.html +++ b/docs/doxygen/header.html @@ -20,4 +20,6 @@ - \ No newline at end of file + + + \ No newline at end of file diff --git a/docs/doxygen/main.doxygen.md b/docs/doxygen/main.doxygen.md deleted file mode 100644 index bd2192f..0000000 --- a/docs/doxygen/main.doxygen.md +++ /dev/null @@ -1 +0,0 @@ -Ces outils s'appuient sur la [librairie ROK4 C++](https://rok4.github.io/core-cpp/). Ils sont à la base du calcul des pyramides, format des données central du projet. \ No newline at end of file diff --git a/docs/doxygen/mainpage.cpp b/docs/doxygen/mainpage.cpp new file mode 100644 index 0000000..186d00c --- /dev/null +++ b/docs/doxygen/mainpage.cpp @@ -0,0 +1,26 @@ + +/** \mainpage Suite d'outils de génération ROK4 + * + * \~french + * + * Ces outils s'appuient sur la librairie ROK4 C++ . Ils sont à la base du calcul des pyramides, format des données central du projet. + * + * \li \ref cache2work + * \li \ref checkWork + * \li \ref composeNtiff + * \li \ref decimateNtiff + * \li \ref manageNodata + * \li \ref merge4tiff + * \li \ref mergeNtiff + * \li \ref overlayNtiff + * \li \ref pbf2cache + * \li \ref work2cache + * + * La légende utilisée dans tous les schémas de la documentation sera la suivante + * + * \~english Global operation is described into page \ref mergeNtiff . Used legend for next schemas will be next one + * + * \~ \image html legende.png + * + * \~ \image html formats.png +*/ \ No newline at end of file diff --git a/docs/images/mergeNtiff_legende.png b/docs/images/legende.png similarity index 100% rename from docs/images/mergeNtiff_legende.png rename to docs/images/legende.png diff --git a/src/cache2work.cpp b/src/cache2work.cpp index 89e6d76..3d799c1 100644 --- a/src/cache2work.cpp +++ b/src/cache2work.cpp @@ -36,12 +36,32 @@ */ /** - * \file cache2work.cpp + * \page cache2work Commande cache2work * \author Institut national de l'information géographique et forestière - * \~french \brief Convertit une image d'une pyramide ROK4 (TIFF tuilé) en une image TIFF, lisible avec LibtiffImage - * \~french \details Certains formats sont propres aux spécifications d'une pyramide d'images ROK4 (format PNG). - * Vision libimage : Rok4Image -> FileImage - * \~english \brief Convert a ROK4 pyramide's image (tiled TIFF) to a TIFF image, readable with LibtiffImage + * \~ \image html cache2work.png \~french + * \~french \brief Convertit une image d'une pyramide ROK4 (TIFF tuilé) en une image TIFF standard + * \~english \brief Convert a ROK4 pyramide's image (tiled TIFF) to a standard TIFF image + * + * \~french + * + * L'implémentation de cette commande se trouve dans le fichier \ref cache2work.cpp + * + * \section diagram_cache2work Détails du chaînage des différentes classes d'image : + * + * @mermaid{cache2work} + * + */ + +/** \file cache2work.cpp + * \~french + * \brief Fichier d'implémentation de la commande cache2work + * + * Le fonctionnement général est décrit dans la page \ref cache2work . + * + * \~english + * \brief Implementation file for command cache2work + * + * Global operation is described into page \ref cache2work . */ #include diff --git a/src/checkWork.cpp b/src/checkWork.cpp index dab2c0e..4d9d826 100644 --- a/src/checkWork.cpp +++ b/src/checkWork.cpp @@ -36,10 +36,31 @@ */ /** - * \file checkWork.cpp + * \page checkWork Commande checkWork * \author Institut national de l'information géographique et forestière * \~french \brief Contrôle la validité d'une image * \~english \brief Control image validity + * + * \~french + * + * L'implémentation de cette commande se trouve dans le fichier \ref checkWork.cpp + * + * \section diagram_checkWork Détails du chaînage des différentes classes d'image : + * + * @mermaid{checkWork} + * + */ + +/** \file checkWork.cpp + * \~french + * \brief Fichier d'implémentation de la commande checkWork + * + * Le fonctionnement général est décrit dans la page \ref checkWork . + * + * \~english + * \brief Implementation file for command checkWork + * + * Global operation is described into page \ref checkWork . */ #include diff --git a/src/composeNtiff.cpp b/src/composeNtiff.cpp index c2f4717..23ff98e 100644 --- a/src/composeNtiff.cpp +++ b/src/composeNtiff.cpp @@ -36,10 +36,32 @@ */ /** - * \file composeNtiff.cpp + * \page composeNtiff Commande composeNtiff * \author Institut national de l'information géographique et forestière + * \~ \image html composeNtiff.png \~french * \~french \brief Montage de N images TIFF aux mêmes dimensions et caractéristiques * \~english \brief Monte N TIFF images with same dimensions and attributes + * + * \~french + * + * L'implémentation de cette commande se trouve dans le fichier \ref composeNtiff.cpp + * + * \section diagram_composeNtiff Détails du chaînage des différentes classes d'image : + * + * @mermaid{composeNtiff} + * + */ + +/** \file composeNtiff.cpp + * \~french + * \brief Fichier d'implémentation de la commande composeNtiff + * + * Le fonctionnement général est décrit dans la page \ref composeNtiff . + * + * \~english + * \brief Implementation file for command composeNtiff + * + * Global operation is described into page \ref composeNtiff . */ #include @@ -222,7 +244,7 @@ int parse_command_line ( int argc, char** argv ) { /** * \~french * \brief Charge les images contenues dans le dossier en entrée et l'image de sortie - * \details Toutes les images doivent avoir les mêmes caractéristiques, dimensions et type des canaux. Les images en entrée seront gérée par un objet de la classe #CompoundImage, et l'image en sortie sera une image TIFF. + * \details Toutes les images doivent avoir les mêmes caractéristiques, dimensions et type des canaux. Les images en entrée seront gérée par un objet de la classe CompoundImage, et l'image en sortie sera une image TIFF. * * \param[out] output_image image résultante de l'outil * \param[out] compound_image ensemble des images en entrée diff --git a/src/decimateNtiff.cpp b/src/decimateNtiff.cpp index d3d3bb1..dd614b0 100644 --- a/src/decimateNtiff.cpp +++ b/src/decimateNtiff.cpp @@ -36,13 +36,35 @@ */ /** - * \file decimateNtiff.cpp + * \page decimateNtiff Commande decimateNtiff * \author Institut national de l'information géographique et forestière - * \~french \brief Création d'une image TIFF géoréférencée à partir de n images sources géoréférencées - * \~english \brief Create one georeferenced TIFF image from several georeferenced images * \~ \image html decimateNtiff.png \~french + * \~french \brief Création d'une image TIFF géoréférencée à partir de n images sources géoréférencées par décimation + * \~english \brief Create one georeferenced TIFF image from several georeferenced images with decimation + * + * \~french + * + * L'implémentation de cette commande se trouve dans le fichier \ref decimateNtiff.cpp + * + * \section diagram_decimateNtiff Détails du chaînage des différentes classes d'image : + * + * @mermaid{decimateNtiff} + * + */ + +/** \file decimateNtiff.cpp + * \~french + * \brief Fichier d'implémentation de la commande decimateNtiff + * + * Le fonctionnement général est décrit dans la page \ref decimateNtiff . + * + * \~english + * \brief Implementation file for command decimateNtiff + * + * Global operation is described into page \ref decimateNtiff . */ + #include #include #include @@ -71,13 +93,6 @@ namespace keywords = boost::log::keywords; #include #include "config.h" -#ifndef __max -#define __max(a, b) ( ((a) > (b)) ? (a) : (b) ) -#endif -#ifndef __min -#define __min(a, b) ( ((a) < (b)) ? (a) : (b) ) -#endif - // Paramètres de la ligne de commande déclarés en global /** \~french Chemin du fichier de configuration des images */ char configuration_path[256]; @@ -496,6 +511,14 @@ int load_images ( FileImage** output_image, FileImage** output_mask, std::vector return 0; } +/** + * \~french + * \brief Ajoute les éventuel convertisseurs aux images en entrée + * \details Si un format de sortie a été spécifié et qu'il n'est pas identique à celui des images en entrée, on ajoute un convertisseur + * + * \param[in] input_images images en entrée + * \return code de retour, 0 si réussi, -1 sinon + */ int add_converters(std::vector input_images) { if (! output_format_provided) { // On n'a pas précisé de format en sortie, donc toutes les images doivent avoir le même diff --git a/src/manageNodata.cpp b/src/manageNodata.cpp index 00113fb..a1f536a 100644 --- a/src/manageNodata.cpp +++ b/src/manageNodata.cpp @@ -36,11 +36,15 @@ */ /** - * \file manageNodata.cpp + * \page manageNodata Commande manageNodata * \author Institut national de l'information géographique et forestière + * \~ \image html manageNodata.png \~french * \~french \brief Gère la couleur des pixels de nodata * \~english \brief Manage nodata pixel color - * \~french \details Cet outil est destiné à : + * + * \~french + * + * Cet outil est destiné à : * \li identifier les pixels de nodata à partir d'une valeur et d'une tolérance * \li modifier les pixels qui contiennent cette valeur * \li écrire le masque de données associé à l'image @@ -61,12 +65,29 @@ * \li la couleur cible (obligatoire) : les pixels de cette couleur sont ceux potentiellement considérés comme du nodata et modifiés. On peut également préciser une tolérance en complément de la valeur. L'option "touche les bords" précise la façon dont on identifie les pixels de nodata. * \li la nouvelle couleur de nodata : si elle n'est pas précisée, cela veut dire qu'on ne veut pas la modifier * \li la nouvelle couleur de donnée : si elle n'est pas précisée, cela veut dire qu'on ne veut pas la modifier - * - * \~ \image html manageNodata.png \~french - * + * * Cet outil n'est qu'une interface permettant l'utilisation de la classe TiffNodataManager, qui réalise réellement tous les traitements. * * Le nombre de canaux du fichier en entrée et les valeurs de nodata renseignée doivent être cohérents. + * + * L'implémentation de cette commande se trouve dans le fichier \ref manageNodata.cpp + * + * \section diagram_manageNodata Détails du chaînage des différentes classes d'image : + * + * @mermaid{manageNodata} + * + */ + +/** \file manageNodata.cpp + * \~french + * \brief Fichier d'implémentation de la commande manageNodata + * + * Le fonctionnement général est décrit dans la page \ref manageNodata . + * + * \~english + * \brief Implementation file for command manageNodata + * + * Global operation is described into page \ref manageNodata . */ using namespace std; diff --git a/src/merge4tiff.cpp b/src/merge4tiff.cpp index ce580dc..8c7ae90 100644 --- a/src/merge4tiff.cpp +++ b/src/merge4tiff.cpp @@ -35,7 +35,6 @@ * knowledge of the CeCILL-C license and that you accept its terms. */ - /** * \page merge4tiff Commande merge4tiff * \author Institut national de l'information géographique et forestière @@ -46,7 +45,8 @@ * \~french * * L'implémentation de cette commande se trouve dans le fichier \ref merge4tiff.cpp - * \section diagram Détails du chaînage des différentes classes d'image : + * + * \section diagram_merge4tiff Détails du chaînage des différentes classes d'image : * * @mermaid{merge4tiff} * @@ -456,7 +456,7 @@ int check_components ( FileImage* image, int position ) { * \details Crée les objets TIFF, contrôle la cohérence des caractéristiques des images en entrée, ouvre les flux de lecture et écriture. Les éventuels masques associés sont ajoutés aux objets FileImage. * \param[in] output_image image en sortie * \param[in] output_mask masque en sortie - * \param[in] input_images image composée en entrée + * \param[in] input_image image composée en entrée * \return code de retour, 0 si réussi, -1 sinon */ int load_images ( FileImage** output_image, FileImage** output_mask, Image **input_image) { @@ -551,7 +551,7 @@ int load_images ( FileImage** output_image, FileImage** output_mask, Image **inp } if (! si->set_mask(sm)) { - BOOST_LOG_TRIVIAL(error) << "Cannot add mask to the Subsmapled image"; + BOOST_LOG_TRIVIAL(error) << "Cannot add mask to the Subsampled image"; return -1; } diff --git a/src/mergeNtiff.cpp b/src/mergeNtiff.cpp index 353a8d8..75f0e10 100644 --- a/src/mergeNtiff.cpp +++ b/src/mergeNtiff.cpp @@ -36,19 +36,37 @@ */ /** - * \file mergeNtiff.cpp + * \page mergeNtiff Commande mergeNtiff * \author Institut national de l'information géographique et forestière - * \~french \brief Création d'une image TIFF géoréférencée à partir de n images sources géoréférencées - * \~english \brief Create one georeferenced TIFF image from several georeferenced images * \~ \image html mergeNtiff.png \~french - * - * La légende utilisée dans tous les schémas de la documentation de ce fichier sera la suivante - * \~ \image html mergeNtiff_legende.png \~french - * + * \~french \brief Création d'une image TIFF géoréférencée à partir de plusieurs images sources géoréférencées + * \~english \brief Create one georeferenced TIFF image from several georeferenced images + * + * \~french + * + * L'implémentation de cette commande se trouve dans le fichier \ref mergeNtiff.cpp + * * Pour réaliser la fusion des images en entrée, on traite différemment : * \li les images qui sont superposables à l'image de sortie (même SRS, mêmes résolutions, mêmes phases) : on parle alors d'images compatibles, pas de réechantillonnage nécessaire. * \li les images non compatibles mais de même SRS : un passage par le réechantillonnage (plus lourd en calcul) est indispensable. * \li les images non compatibles et de SRS différents : un passage par la reprojection (encore plus lourd en calcul) est indispensable. + * + * \section diagram_mergeNtiff Détails du chaînage des différentes classes d'image : + * + * @mermaid{mergeNtiff} + * + */ + +/** \file mergeNtiff.cpp + * \~french + * \brief Fichier d'implémentation de la commande mergeNtiff + * + * Le fonctionnement général est décrit dans la page \ref mergeNtiff . + * + * \~english + * \brief Implementation file for command mergeNtiff + * + * Global operation is described into page \ref mergeNtiff . */ #include @@ -97,6 +115,7 @@ char images_root[256]; /** \~french Valeur de nodata sous forme de chaîne de caractère (passée en paramètre de la commande) */ char strnodata[256]; +/** \~french Valeur de nodata sous forme de tableau d'entiers */ int* nodata; /** \~french A-t-on précisé une valeur de nodata */ bool nodata_provided = false; @@ -437,7 +456,7 @@ bool load_configuration( * Le chemin vers le fichier de configuration est stocké dans la variables globale configuration_path et images_root va être concaténer au chemin vers les fichiers de sortie. * \param[out] output_image image résultante de l'outil * \param[out] output_mask masque résultat de l'outil, si demandé - * \param[out] sorted_input_images ensemble des images en entrée + * \param[out] input_images ensemble des images en entrée * \return code de retour, 0 si réussi, -1 sinon */ int load_images(FileImage** output_image, FileImage** output_mask, std::vector* input_images) { @@ -627,6 +646,14 @@ int load_images(FileImage** output_image, FileImage** output_mask, std::vector input_images) { if (! output_format_provided) { // On n'a pas précisé de format en sortie, donc toutes les images doivent avoir le même @@ -977,7 +1004,7 @@ bool reproject_images(FileImage* output_image, ExtendedCompoundImage* input_imag * * Les masques sont gérés en toile de fond, en étant attachés à chacune des images manipulées. * \param[in] output_image image de sortie - * \param[in] input_images paquets d'images en entrée + * \param[in] sorted_input_images paquets d'images en entrée * \param[out] merged_image paquet d'images superposable avec l'image de sortie * \return 0 en cas de succès, -1 en cas d'erreur */ diff --git a/src/overlayNtiff.cpp b/src/overlayNtiff.cpp index bfd92cb..7c2b287 100644 --- a/src/overlayNtiff.cpp +++ b/src/overlayNtiff.cpp @@ -36,10 +36,32 @@ */ /** - * \file overlayNtiff.cpp + * \page overlayNtiff Commande overlayNtiff * \author Institut national de l'information géographique et forestière + * \~ \image html overlayNtiff.png \~french * \~french \brief Fusion de N images aux mêmes dimensions, selon différentes méthodes * \~english \brief Merge N images with same dimensions, according to different merge methods + * + * \~french + * + * L'implémentation de cette commande se trouve dans le fichier \ref overlayNtiff.cpp + * + * \section diagram_overlayNtiff Détails du chaînage des différentes classes d'image : + * + * @mermaid{overlayNtiff} + * + */ + +/** \file overlayNtiff.cpp + * \~french + * \brief Fichier d'implémentation de la commande overlayNtiff + * + * Le fonctionnement général est décrit dans la page \ref overlayNtiff . + * + * \~english + * \brief Implementation file for command overlayNtiff + * + * Global operation is described into page \ref overlayNtiff . */ #include @@ -358,7 +380,7 @@ int read_configuration_line ( std::ifstream& configuration_file, char* image_pat * * \param[out] output_image image résultante de l'outil * \param[out] output_mask masque résultat de l'outil, si demandé - * \param[out] pImageIn ensemble des images en entrée + * \param[out] merged_image ensemble des images en entrée * \return code de retour, 0 si réussi, -1 sinon */ int load_images ( FileImage** output_image, FileImage** output_mask, MergeImage** merged_image ) { diff --git a/src/pbf2cache.cpp b/src/pbf2cache.cpp index f54c361..618b1d7 100644 --- a/src/pbf2cache.cpp +++ b/src/pbf2cache.cpp @@ -36,10 +36,32 @@ */ /** - * \file pbf2cache.cpp + * \page pbf2cache Commande pbf2cache * \author Institut national de l'information géographique et forestière + * \~ \image html pbf2cache.png \~french * \~french \brief Consitution d'une dalle vecteur ROK4 à partir des tuiles PBF - * \~english \brief Build a vector ROK4 slab from PBD tiles + * \~english \brief Build a vector ROK4 slab from PBF tiles + * + * \~french + * + * L'implémentation de cette commande se trouve dans le fichier \ref pbf2cache.cpp + * + * \section diagram_pbf2cache Détails du chaînage des différentes classes d'image : + * + * @mermaid{pbf2cache} + * + */ + +/** \file pbf2cache.cpp + * \~french + * \brief Fichier d'implémentation de la commande pbf2cache + * + * Le fonctionnement général est décrit dans la page \ref pbf2cache . + * + * \~english + * \brief Implementation file for command pbf2cache + * + * Global operation is described into page \ref pbf2cache . */ #include diff --git a/src/work2cache.cpp b/src/work2cache.cpp index 3605cee..a1bfa91 100644 --- a/src/work2cache.cpp +++ b/src/work2cache.cpp @@ -35,14 +35,32 @@ * knowledge of the CeCILL-C license and that you accept its terms. */ -/** - * \file work2cache.cpp + /** + * \page work2cache Commande work2cache * \author Institut national de l'information géographique et forestière - * \~french \brief Formattage d'une image, respectant les spécifications d'une pyramide de données ROK4 - * \~english \brief Image formatting, according to ROK4 specifications - * \~french \details Le serveur ROK4 s'attend à trouver dans une pyramide d'images des images au format TIFF, tuilées, potentiellement compressées, avec une en-tête de taille fixe (2048 octets). C'est cet outil, via l'utilisation de la classe TiledTiffWriter, qui va "mettre au normes" les images. - * - * Vision libimage : FileImage -> Rok4Image + * \~french \details Formattage d'une image, respectant les spécifications d'une pyramide de données ROK4 + * \~english \details Image formatting, according to ROK4 specifications + * + * \~french + * + * Le serveur ROK4 s'attend à trouver dans une pyramide d'images des images au format TIFF, tuilées, potentiellement compressées, avec une en-tête de taille fixe (2048 octets). + * + * \section diagram_work2cache Détails du chaînage des différentes classes d'image : + * + * @mermaid{work2cache} + * + */ + +/** \file work2cache.cpp + * \~french + * \brief Fichier d'implémentation de la commande work2cache + * + * Le fonctionnement général est décrit dans la page \ref work2cache . + * + * \~english + * \brief Implementation file for command mergeNtiff + * + * Global operation is described into page \ref mergeNtiff . */ #include