otb issueshttps://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/issues2024-03-06T14:19:10Zhttps://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/issues/1644Replace Superbuild by vcpkg2024-03-06T14:19:10ZJordi IngladaReplace Superbuild by vcpkg### What changes will be made and why they would make a better Orfeo ToolBox?
#### High level description
The Superbuild is complex and costly to maintain. The use of a C++ package manager like vcpckg (https://vcpkg.readthedocs.io/en/l...### What changes will be made and why they would make a better Orfeo ToolBox?
#### High level description
The Superbuild is complex and costly to maintain. The use of a C++ package manager like vcpckg (https://vcpkg.readthedocs.io/en/latest/) could help simplify things.
A C++ package manager allows installing dependencies (pre-compiled binaries or building from sources) similarly to a linux package manager (apt, yum) or Python's pip, like:
`vcpkg install sqlite3`
From the 37 dependencies in the Superbuild, vcpkg has everything except for
1. HDF4
2. libsvm
3. muparserx
4. openthreads
5. ossim
6. qtw
7. shark
Ports files (recipes for building a library) can be submitted to vcpkg. As an example, gdal is packaged like this https://github.com/Microsoft/vcpkg/tree/master/ports/gdal
Once the dependencies are installed, they can be used with CMake with `find_package` and passing the toolchain file to the cmake configuration:
`cmake -DCMAKE_TOOLCHAIN_FILE=${VCPKG_DIR}/scripts/buildsystems/vcpkg.cmake ../`
The plan would therefore be:
1. Submit port files to vcpkg for the missing OTB dependencies
2. Submit a port file for OTB
3. `vcpkg install otb`
#### Risks and benefits
- Benefits: reduced work for OTB dev team, binary distribution of the developper version of OTB, one line OTB installation
- Dependency on an external tool (but which is open source)
#### Alternatives for implementations
Other C++ package managers exist (like conan http://conan.io).
### Who will be developing the proposed changes?https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/issues/1639Log of application command line in the GUI is broken2018-10-19T14:11:28ZManuel GrizonnetLog of application command line in the GUI is broken### Description
The log tab in application GUI should display the corresponding command
It seems broken. For instance for the BandMath application, the input image is missing in the log :
2018-06-15 12:21:25 (INFO): otbcli_BandMath -ou...### Description
The log tab in application GUI should display the corresponding command
It seems broken. For instance for the BandMath application, the input image is missing in the log :
2018-06-15 12:21:25 (INFO): otbcli_BandMath -out /home/grizonnetm/temporary/test.tif float -ram 128 -exp im1b1
Probably related to the refactoring of input app parameters (and missing test of this log feature:(
### Steps to reproduce
Describe as precisely as possible how to reproduce the bug. Try to isolate a minimal number of steps. Also describe reproducibility (always, random ...).
### Configuration information
OS, OTB version or tag, information related to build (binaries, superbuild, system libs ...)Manuel GrizonnetManuel Grizonnethttps://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/issues/1635include-what-you-use2018-06-21T15:48:21ZVictor Poughoninclude-what-you-useI have managed to run [include-what-you-use](https://include-what-you-use.org/) on OTB. Attached is the full output:
[include_what_you_use.txt](/uploads/c679bd0bfb6a6d828ccea31fd8c6650e/include_what_you_use.txt)
We can use this issue f...I have managed to run [include-what-you-use](https://include-what-you-use.org/) on OTB. Attached is the full output:
[include_what_you_use.txt](/uploads/c679bd0bfb6a6d828ccea31fd8c6650e/include_what_you_use.txt)
We can use this issue for feedback and discussion on actions to be taken. There are probably some false positives and some recommendations we do not want to follow. But most of it is certainly useful. We can proceed module by module for example.
The tool `fix_includes.py` can take this output and fix the code automatically. I will look into if we can use it to produce some nice diffs.
version used:
```
[poughov@node151 build]$ include-what-you-use --version
include-what-you-use 0.9 (git:15b3f1d) based on clang version 5.0.0 (https://github.com/llvm-mirror/clang.git 7e8743f82ac7957c66d9c2444996be5b1218673b) (https://github.com/llvm-mirror/llvm.git 657c31173ea30090583e40c7a9204561d9c2d8c4)
```
run on OTB commit 649838457a573996d2842chttps://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/issues/1623OTB doxygen search bar don't work for online version2018-10-31T17:31:03ZManuel GrizonnetOTB doxygen search bar don't work for online version### Description
Any research in otb doxygen leads to a blank page, see:
https://www.orfeo-toolbox.org/doxygen/index.html
### Steps to reproduce
Describe as precisely as possible how to reproduce the bug. Try to isolate a minimal numb...### Description
Any research in otb doxygen leads to a blank page, see:
https://www.orfeo-toolbox.org/doxygen/index.html
### Steps to reproduce
Describe as precisely as possible how to reproduce the bug. Try to isolate a minimal number of steps. Also describe reproducibility (always, random ...).
### Configuration information
OS, OTB version or tag, information related to build (binaries, superbuild, system libs ...)6.6.1Guillaume PaseroGuillaume Paserohttps://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/issues/1622Extract ROI extent mode produces wrong output2018-10-19T14:11:30ZJulien MichelExtract ROI extent mode produces wrong output### Description
If upper left and lower right corners are wrong in `extent` mode, the application hapily generates a wrong output.
### Steps to reproduce
With gdal, if you invert upper-left and lower-right corners, you get an error:
...### Description
If upper left and lower right corners are wrong in `extent` mode, the application hapily generates a wrong output.
### Steps to reproduce
With gdal, if you invert upper-left and lower-right corners, you get an error:
```
$ gdal_translate -projwin 7.2 45.2 7.3 45.3 -projwin_srs EPSG:4326 N45E007.hgt test.tif
Input file size is 3601, 3601
ERROR 1: Error: Computed -srcwin 720 2880 360 -360 has negative width and/or height.
$ gdal_translate -projwin 7.2 45.3 7.3 45.2 -projwin_srs EPSG:4326 N45E007.hgt test.tif
Input file size is 3601, 3601
0...10...20...30...40...50...60...70...80...90...100 - done.
```
In `ExtractROI`, you get a wrong image without notice.
In correct case, size is consistent with the output from gdal (361x361):
```
$ otbcli_ExtractROI -in N45E007.hgt -out test.tif int16 -mode extent -mode.extent.unit lonlat -mode.extent.uly 45.3 -mode.extent.lry 45.2 -mode.extent.ulx 7.2 -mode.extent.lrx 7.3
2018-06-01 08:48:01 (INFO): No kwl metadata found in file N45E007.hgt
2018-06-01 08:48:01 (INFO): Default RAM limit for OTB is 128 MB
2018-06-01 08:48:01 (INFO): GDAL maximum cache size is 12854 MB
2018-06-01 08:48:01 (INFO): OTB will use at most 48 threads
2018-06-01 08:48:01 (INFO): Estimated memory for full processing: 1.47233MB (avail.: 128 MB), optimal image partitioning: 1 blocks
2018-06-01 08:48:01 (INFO): File test.tif will be written in 1 blocks of 361x361 pixels
Writing test.tif...: 100% [**************************************************] (1 seconds)
```
If we invert `uly` and `lry`, no error but the output size is 361x721 and probably correspond to a wrong roi:
```
$ otbcli_ExtractROI -in N45E007.hgt -out test.tif int16 -mode extent -mode.extent.unit lonlat -mode.extent.uly 45.2 -mode.extent.lry 45.3 -mode.extent.ulx 7.2 -mode.extent.lrx 7.3
2018-06-01 08:50:48 (INFO): No kwl metadata found in file N45E007.hgt
2018-06-01 08:50:48 (INFO): Default RAM limit for OTB is 128 MB
2018-06-01 08:50:48 (INFO): GDAL maximum cache size is 12854 MB
2018-06-01 08:50:48 (INFO): OTB will use at most 48 threads
2018-06-01 08:50:48 (INFO): Estimated memory for full processing: 2.95961MB (avail.: 128 MB), optimal image partitioning: 1 blocks
2018-06-01 08:50:48 (INFO): File test.tif will be written in 1 blocks of 361x721 pixels
Writing test.tif...: 100% [**************************************************] (0 seconds)
```
This probably comes from not checking properly computed coordinates in extent mode.
### Configuration information
All.Guillaume PaseroGuillaume Paserohttps://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/issues/1610Remove QT4 patch directory in the superbuild?2018-05-30T14:32:09ZManuel GrizonnetRemove QT4 patch directory in the superbuild?### Description
Can I remove the QT4 patch directory in the superbuild as OTB 6.6 is only compatible qith QT5?
see: https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/tree/release-6.6/SuperBuild/patches/QT4
If a superbuild guru can tel...### Description
Can I remove the QT4 patch directory in the superbuild as OTB 6.6 is only compatible qith QT5?
see: https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/tree/release-6.6/SuperBuild/patches/QT4
If a superbuild guru can tell me...
### Steps to reproduce
Describe as precisely as possible how to reproduce the bug. Try to isolate a minimal number of steps. Also describe reproducibility (always, random ...).
### Configuration information
OS, OTB version or tag, information related to build (binaries, superbuild, system libs ...)6.6.0Manuel GrizonnetManuel Grizonnethttps://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/issues/1597config arcee to test building on debian (using gbp buildpackage)2022-01-06T10:50:05ZRashad Kanavathconfig arcee to test building on debian (using gbp buildpackage)configure debian vm to build otb from debiangis and submit results to dashboard.configure debian vm to build otb from debiangis and submit results to dashboard.https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/issues/1562Improve generation of QGis descriptors2018-05-03T14:23:02ZGuillaume PaseroImprove generation of QGis descriptorsThe current way to generate QGis descriptors is to call `make generate_qgis_descriptor`, after all applications have been generated. It would be more convenient to declare the descriptor file during `otb_create_application` macro. This w...The current way to generate QGis descriptors is to call `make generate_qgis_descriptor`, after all applications have been generated. It would be more convenient to declare the descriptor file during `otb_create_application` macro. This way, each descriptor will be generated right after building the application, requiring a single call to `make`.
Of course, a boolean option in CMake can be added to enable/disable this automatic generation of descriptors.
Another proposal is to move the descriptor folder to `PREFIX/lib/otb/descriptors`.7.0.0https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/issues/1550Add in Contributing.md that only compilation fixes are allowed in develop br...2018-04-16T14:33:42ZManuel GrizonnetAdd in Contributing.md that only compilation fixes are allowed in develop branch### Description
If develop branch is broken, it is simpler to just push the "COMP" fixes on develop directly.
We can agree that only COMP commits that fix the dashboard can go directly to develop. All the others go to merge request.
...### Description
If develop branch is broken, it is simpler to just push the "COMP" fixes on develop directly.
We can agree that only COMP commits that fix the dashboard can go directly to develop. All the others go to merge request.
### Steps to reproduce
Describe as precisely as possible how to reproduce the bug. Try to isolate a minimal number of steps. Also describe reproducibility (always, random ...).
### Configuration information
OS, OTB version or tag, information related to build (binaries, superbuild, system libs ...)6.6.0Manuel GrizonnetManuel Grizonnethttps://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/issues/1539Support z field in input tie point file for GenerateRPCModel and RefineSensor...2024-02-26T14:26:29ZJulien MichelSupport z field in input tie point file for GenerateRPCModel and RefineSensorModel applicationCurrently, the GenerateRPCModel application reads (x,y) and (lat,lon) from the tie points file, and then retrieve the z from input DSM (elev.dem param). It would be interesting to also be able to retrieve the z field from the tie points ...Currently, the GenerateRPCModel application reads (x,y) and (lat,lon) from the tie points file, and then retrieve the z from input DSM (elev.dem param). It would be interesting to also be able to retrieve the z field from the tie points file (optionaly).
This also apply to RefineSensorModel application as requested in #1872.https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/issues/1532Synchronized writers2020-01-16T15:14:35ZJulien MichelSynchronized writersIn Orfeo ToolBox, there are several filters that produces multiple output images. For now, writing all those output to separate files is inneficient, since the streaming mechanism will end up executing the filter on the whole dataset sev...In Orfeo ToolBox, there are several filters that produces multiple output images. For now, writing all those output to separate files is inneficient, since the streaming mechanism will end up executing the filter on the whole dataset several time.
The workaround is to pack all those outputs in a single output image using `ImageListToVectorImageFilter`, but this is not a good solution in many cases : the different ouptut might represent very different things that should not resid in a single `VectorImage`, and sometimes the different ouptuts have different types (for instance if their is an output mask along with a scalar image).
We need to enable synchronization between writer, so that once a stream is calculated by the filter, all corresponding output files are updated.7.1.0Cédric TraizetCédric Traizethttps://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/issues/1530Local RX detector application2019-04-16T12:59:17ZJulien MichelLocal RX detector applicationWe have a local RX detector filter here :
https://www.orfeo-toolbox.org//doxygen-current/classotb_1_1LocalRxDetectorFilter.html
But the corresponding app seems to be missing. It would be great to have it.We have a local RX detector filter here :
https://www.orfeo-toolbox.org//doxygen-current/classotb_1_1LocalRxDetectorFilter.html
But the corresponding app seems to be missing. It would be great to have it.7.0.0https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/issues/1518PolygonClassStatistics application stalled after polygons analysis2018-05-29T09:49:34ZManuel GrizonnetPolygonClassStatistics application stalled after polygons analysis### Description
I want to compute polygon statistics per class on Snow mask distributed by the THEIA platform (http://www.theia-land.fr/en/products/snow).
I use the PolygonClassStatistics for that, The progress report states that 100% ...### Description
I want to compute polygon statistics per class on Snow mask distributed by the THEIA platform (http://www.theia-land.fr/en/products/snow).
I use the PolygonClassStatistics for that, The progress report states that 100% of polygons have been analyzed but then
I let the application runs for few hours but it never finished.
There are around 60 000 polygons in the vector file on which I'm trying to compute the statistics.
### Steps to reproduce
I use the following snow product from the theia data center (Tile T32TLQ 20180211)
https://theia.cnes.fr/atdistrib/rocket/#/collections/Snow/0324e0d3-a05c-5ed9-92c0-77f084a0dec8
Inside the archive I've used the snow mask in raster and vector formats:
SENTINEL2A_20180211-102559-219_L2B-SNOW_T32TLQ_D_V1-4_SNW_R2.tif and
SENTINEL2A_20180211-102559-219_L2B-SNOW_T32TLQ_D_V1-4_SNW_R2.shp
Firstly I've computed a validity mask to only compute statistics on snow and no-snow classes which corresponds to labels 100 and 0) and discard cloud and no-data (labels 205 and 254). I've done this with the bandMath application:
otbcli_BandMath -il ../SENTINEL2A_20180211-102559-219_L2B-SNOW_T32TLQ_D_V1-4/SENTINEL2A_20180211-102559-219_L2B-SNOW_T32TLQ_D_V1-4_SNW_R2.tif -out nodata_and_cloud_mask.tif uint8 -exp "(im1b1==254 || im1b1== 205)?0:1"
Then, I run the PolygonClassStatistics on the polygons using this validity mask:
otbcli_PolygonClassStatistics -in SENTINEL2A_20180211-102559-219_L2B-SNOW_T32TLQ_D_V1-4/SENTINEL2A_20180211-102559-219_L2B-SNOW_T32TLQ_D_V1-4_SNW_R2.tif -mask nodata_and_cloud_mask.tif -vec ../SENTINEL2A_20180211-102559-219_L2B-SNOW_T32TLQ_D_V1-4/SENTINEL2A_20180211-102559-219_L2B-SNOW_T32TLQ_D_V1-4_SNW_R2.shp -field DN -out PolygonClassStatistics.xml
### Configuration information
Tested with OTB develop branch (6.6) in release and debug mode (debug messages don't provide more information on where the application is blocked6.6.0https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/issues/1510Support configuration option of GDAL as extended filename2022-01-20T16:11:14ZMickael SavinaudSupport configuration option of GDAL as extended filename### What changes will be made and why they would make a better Orfeo ToolBox?
Configuration options of GDAL are very interesting: https://trac.osgeo.org/gdal/wiki/ConfigOptions
I could be interesting to add the possibility to pass these ...### What changes will be made and why they would make a better Orfeo ToolBox?
Configuration options of GDAL are very interesting: https://trac.osgeo.org/gdal/wiki/ConfigOptions
I could be interesting to add the possibility to pass these options trough the extended filename mechanism.
I propose to enhance the extendedFilename class to support them.
#### High level description
Add new key in extended filename syntax: gdal:config=<KEY>=<VALUE>
#### Risks and benefits
Offer the possibility to mimic the gdal config options.
#### Alternatives for implementations
No
### Who will be developing the proposed changes?
Not defined currentlyhttps://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/issues/1295External overviews gets outdated2022-01-06T11:32:26ZSébastien DinotExternal overviews gets outdated_[Mantis Issue 1295](https://bugs.orfeo-toolbox.org//view.php?id=1295), reported by jmichel, assigned to mgrizonnet, created: 2016-10-07_
External overviews get outdata if the image is reprocessed. Monteverdi does not detect it, and loa..._[Mantis Issue 1295](https://bugs.orfeo-toolbox.org//view.php?id=1295), reported by jmichel, assigned to mgrizonnet, created: 2016-10-07_
External overviews get outdata if the image is reprocessed. Monteverdi does not detect it, and loads an outdated ovr files resulting in upredicted behaviour.
This is especially annoying when calling the same application twice within monteverdi with the same output filename and different parameters. If the user generated overviews the first time, then they will be used when reloading the image, and gives false display (if not crash).
This could maybe be fixed at the gdal level.
**2016-10-18 11:22 - grizonnetm:** See discussion on gal-dev:
http://osgeo-org.1560.x6.nabble.com/gdal-dev-Outdated-external-overviews-td5289792.html
Best option in Monteverdi is what Even suggested:
"The client code (AKA Monteverdi) can also use the GDALDataset::GetFileList() API and see if
there's a .ovr file listed in there. And thus decide to apply a timestamp based
logic if it whishes."https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/issues/819Display Pixel type of Image in ReadImageInfo application2018-08-30T08:56:27ZSébastien DinotDisplay Pixel type of Image in ReadImageInfo application_[Mantis Issue 819](https://bugs.orfeo-toolbox.org//view.php?id=819), reported by rkanavath, assigned to jmichel, created: 2013-11-07_
Although it can be achieved by gdalinfo still it would be nice to have the pixel type information ava..._[Mantis Issue 819](https://bugs.orfeo-toolbox.org//view.php?id=819), reported by rkanavath, assigned to jmichel, created: 2013-11-07_
Although it can be achieved by gdalinfo still it would be nice to have the pixel type information available through ReadImageInfo application.https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/issues/2386Minimum Boost version?2024-03-22T18:50:13ZLaurențiu NicolaMinimum Boost version?I'm trying to figure out the minimum Boost version that OTB requires. Up to now:
- 1.73 and 1.75 work
- 1.70 and 1.72 fail with https://github.com/boostorg/thread/pull/297:
```
./boost/thread/pthread/thread_data.hpp:60:5: error: miss...I'm trying to figure out the minimum Boost version that OTB requires. Up to now:
- 1.73 and 1.75 work
- 1.70 and 1.72 fail with https://github.com/boostorg/thread/pull/297:
```
./boost/thread/pthread/thread_data.hpp:60:5: error: missing binary operator before token "("
60 | #if PTHREAD_STACK_MIN > 0
| ^~~~~~~~~~~~~~~~~
```
- 1.58, 1.64 and 1.68 fail because of a C++11/14 ABI difference (https://github.com/boostorg/system/issues/26, but why were we building Boost with C++11?):
```
/usr/bin/ld: CMakeFiles/OTBMetadata.dir/otbTerraSarXSarImageMetadataInterface.cxx.o: in function `otb::ExtractXMLFiles::GetXMLFilesInDirectory(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool) [clone .localalias]':
otbTerraSarXSarImageMetadataInterface.cxx:(.text+0x15fc): undefined reference to `boost::filesystem::detail::directory_iterator_construct(boost::filesystem::directory_iterator&, boost::filesystem::path const&, boost::system::error_code*)'
/usr/bin/ld: otbTerraSarXSarImageMetadataInterface.cxx:(.text+0x16e7): undefined reference to `boost::filesystem::directory_entry::m_get_status(boost::system::error_code*) const'
/usr/bin/ld: otbTerraSarXSarImageMetadataInterface.cxx:(.text+0x1721): undefined reference to `boost::filesystem::path_traits::dispatch(boost::filesystem::directory_entry const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)'
/usr/bin/ld: otbTerraSarXSarImageMetadataInterface.cxx:(.text+0x172c): undefined reference to `boost::filesystem::path::extension() const'
/usr/bin/ld: CMakeFiles/OTBMetadata.dir/otbTerraSarXSarImageMetadataInterface.cxx.o: in function `otb::ExtractXMLFiles::GetResourceFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool)':
otbTerraSarXSarImageMetadataInterface.cxx:(.text+0x1bda): undefined reference to `boost::filesystem::path::filename() const'
/usr/bin/ld: CMakeFiles/OTBMetadata.dir/otbTerraSarXSarImageMetadataInterface.cxx.o: in function `otb::ExtractXMLFiles::GetXMLFilesInDirectory(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool) [clone .cold]':
otbTerraSarXSarImageMetadataInterface.cxx:(.text.unlikely+0x3a3): undefined reference to `boost::filesystem::detail::dir_itr_close(void*&, void*&)'
/usr/bin/ld: CMakeFiles/OTBMetadata.dir/otbTerraSarXSarImageMetadataInterface.cxx.o: in function `boost::detail::sp_counted_impl_p<boost::filesystem::detail::dir_itr_imp>::dispose()':
otbTerraSarXSarImageMetadataInterface.cxx:(.text._ZN5boost6detail17sp_counted_impl_pINS_10filesystem6detail11dir_itr_impEE7disposeEv[_ZN5boost6detail17sp_counted_impl_pINS_10filesystem6detail11dir_itr_impEE7disposeEv]+0x13): undefined reference to `boost::filesystem::detail::dir_itr_close(void*&, void*&)'
/usr/bin/ld: CMakeFiles/OTBMetadata.dir/otbTerraSarXSarImageMetadataInterface.cxx.o: in function `_GLOBAL__sub_I_otbTerraSarXSarImageMetadataInterface.cxx':
otbTerraSarXSarImageMetadataInterface.cxx:(.text.startup+0x3d): undefined reference to `boost::system::generic_category()'
/usr/bin/ld: otbTerraSarXSarImageMetadataInterface.cxx:(.text.startup+0x42): undefined reference to `boost::system::generic_category()'
/usr/bin/ld: otbTerraSarXSarImageMetadataInterface.cxx:(.text.startup+0x47): undefined reference to `boost::system::system_category()'
/usr/bin/ld: CMakeFiles/OTBMetadata.dir/otbRadarsat2ImageMetadataInterface.cxx.o: in function `otb::Radarsat2ImageMetadataInterface::CreateCalibrationLookupData(otb::SARCalib&, otb::ImageMetadata const&, otb::MetadataSupplierInterface const&, bool) const':
otbRadarsat2ImageMetadataInterface.cxx:(.text+0xb85): undefined reference to `boost::filesystem::path::remove_filename()'
/usr/bin/ld: otbRadarsat2ImageMetadataInterface.cxx:(.text+0xb94): undefined reference to `boost::filesystem::path::operator/=(char const*)'
/usr/bin/ld: otbRadarsat2ImageMetadataInterface.cxx:(.text+0xc2c): undefined reference to `boost::filesystem::path::remove_filename()'
/usr/bin/ld: otbRadarsat2ImageMetadataInterface.cxx:(.text+0xc3b): undefined reference to `boost::filesystem::path::operator/=(char const*)'
/usr/bin/ld: otbRadarsat2ImageMetadataInterface.cxx:(.text+0xd31): undefined reference to `boost::filesystem::path::remove_filename()'
/usr/bin/ld: otbRadarsat2ImageMetadataInterface.cxx:(.text+0xd40): undefined reference to `boost::filesystem::path::operator/=(char const*)'
/usr/bin/ld: CMakeFiles/OTBMetadata.dir/otbRadarsat2ImageMetadataInterface.cxx.o: in function `otb::Radarsat2ImageMetadataInterface::ParseGeom(otb::ImageMetadata&)':
otbRadarsat2ImageMetadataInterface.cxx:(.text+0x3f38): undefined reference to `boost::filesystem::path::remove_filename()'
/usr/bin/ld: otbRadarsat2ImageMetadataInterface.cxx:(.text+0x3f4a): undefined reference to `boost::filesystem::path::operator/=(char const*)'
/usr/bin/ld: otbRadarsat2ImageMetadataInterface.cxx:(.text+0x4405): undefined reference to `boost::filesystem::path::remove_filename()'
/usr/bin/ld: otbRadarsat2ImageMetadataInterface.cxx:(.text+0x4410): undefined reference to `boost::filesystem::path::operator/=(char const*)'
/usr/bin/ld: CMakeFiles/OTBMetadata.dir/otbRadarsat2ImageMetadataInterface.cxx.o: in function `_GLOBAL__sub_I_otbRadarsat2ImageMetadataInterface.cxx':
otbRadarsat2ImageMetadataInterface.cxx:(.text.startup+0x3d): undefined reference to `boost::system::generic_category()'
/usr/bin/ld: otbRadarsat2ImageMetadataInterface.cxx:(.text.startup+0x42): undefined reference to `boost::system::generic_category()'
/usr/bin/ld: otbRadarsat2ImageMetadataInterface.cxx:(.text.startup+0x47): undefined reference to `boost::system::system_category()'
collect2: error: ld returned 1 exit status
```
Note that I'm using GCC 13.2.1. Older compilers might accept that `#if PTHREAD_STACK_MIN > 0`, but it's not that easy to test.https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/issues/2385Can't build OTBMetadata with SuperBuild2024-03-21T13:33:22ZLaurențiu NicolaCan't build OTBMetadata with SuperBuild```
/usr/bin/ld: CMakeFiles/OTBMetadata.dir/otbTerraSarXSarImageMetadataInterface.cxx.o: in function `otb::ExtractXMLFiles::GetXMLFilesInDirectory(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bo...```
/usr/bin/ld: CMakeFiles/OTBMetadata.dir/otbTerraSarXSarImageMetadataInterface.cxx.o: in function `otb::ExtractXMLFiles::GetXMLFilesInDirectory(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool) [clone .localalias]':
otbTerraSarXSarImageMetadataInterface.cxx:(.text+0x15fc): undefined reference to `boost::filesystem::detail::directory_iterator_construct(boost::filesystem::directory_iterator&, boost::filesystem::path const&, boost::system::error_code*)'
/usr/bin/ld: otbTerraSarXSarImageMetadataInterface.cxx:(.text+0x16e7): undefined reference to `boost::filesystem::directory_entry::m_get_status(boost::system::error_code*) const'
/usr/bin/ld: otbTerraSarXSarImageMetadataInterface.cxx:(.text+0x1721): undefined reference to `boost::filesystem::path_traits::dispatch(boost::filesystem::directory_entry const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)'
/usr/bin/ld: otbTerraSarXSarImageMetadataInterface.cxx:(.text+0x172c): undefined reference to `boost::filesystem::path::extension() const'
/usr/bin/ld: CMakeFiles/OTBMetadata.dir/otbTerraSarXSarImageMetadataInterface.cxx.o: in function `otb::ExtractXMLFiles::GetResourceFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool)':
otbTerraSarXSarImageMetadataInterface.cxx:(.text+0x1bda): undefined reference to `boost::filesystem::path::filename() const'
/usr/bin/ld: CMakeFiles/OTBMetadata.dir/otbTerraSarXSarImageMetadataInterface.cxx.o: in function `otb::ExtractXMLFiles::GetXMLFilesInDirectory(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool) [clone .cold]':
otbTerraSarXSarImageMetadataInterface.cxx:(.text.unlikely+0x3a3): undefined reference to `boost::filesystem::detail::dir_itr_close(void*&, void*&)'
/usr/bin/ld: CMakeFiles/OTBMetadata.dir/otbTerraSarXSarImageMetadataInterface.cxx.o: in function `boost::detail::sp_counted_impl_p<boost::filesystem::detail::dir_itr_imp>::dispose()':
otbTerraSarXSarImageMetadataInterface.cxx:(.text._ZN5boost6detail17sp_counted_impl_pINS_10filesystem6detail11dir_itr_impEE7disposeEv[_ZN5boost6detail17sp_counted_impl_pINS_10filesystem6detail11dir_itr_impEE7disposeEv]+0x13): undefined reference to `boost::filesystem::detail::dir_itr_close(void*&, void*&)'
/usr/bin/ld: CMakeFiles/OTBMetadata.dir/otbTerraSarXSarImageMetadataInterface.cxx.o: in function `_GLOBAL__sub_I_otbTerraSarXSarImageMetadataInterface.cxx':
otbTerraSarXSarImageMetadataInterface.cxx:(.text.startup+0x3d): undefined reference to `boost::system::generic_category()'
/usr/bin/ld: otbTerraSarXSarImageMetadataInterface.cxx:(.text.startup+0x42): undefined reference to `boost::system::generic_category()'
/usr/bin/ld: otbTerraSarXSarImageMetadataInterface.cxx:(.text.startup+0x47): undefined reference to `boost::system::system_category()'
/usr/bin/ld: CMakeFiles/OTBMetadata.dir/otbRadarsat2ImageMetadataInterface.cxx.o: in function `otb::Radarsat2ImageMetadataInterface::CreateCalibrationLookupData(otb::SARCalib&, otb::ImageMetadata const&, otb::MetadataSupplierInterface const&, bool) const':
otbRadarsat2ImageMetadataInterface.cxx:(.text+0xb85): undefined reference to `boost::filesystem::path::remove_filename()'
/usr/bin/ld: otbRadarsat2ImageMetadataInterface.cxx:(.text+0xb94): undefined reference to `boost::filesystem::path::operator/=(char const*)'
/usr/bin/ld: otbRadarsat2ImageMetadataInterface.cxx:(.text+0xc2c): undefined reference to `boost::filesystem::path::remove_filename()'
/usr/bin/ld: otbRadarsat2ImageMetadataInterface.cxx:(.text+0xc3b): undefined reference to `boost::filesystem::path::operator/=(char const*)'
/usr/bin/ld: otbRadarsat2ImageMetadataInterface.cxx:(.text+0xd31): undefined reference to `boost::filesystem::path::remove_filename()'
/usr/bin/ld: otbRadarsat2ImageMetadataInterface.cxx:(.text+0xd40): undefined reference to `boost::filesystem::path::operator/=(char const*)'
/usr/bin/ld: CMakeFiles/OTBMetadata.dir/otbRadarsat2ImageMetadataInterface.cxx.o: in function `otb::Radarsat2ImageMetadataInterface::ParseGeom(otb::ImageMetadata&)':
otbRadarsat2ImageMetadataInterface.cxx:(.text+0x3f38): undefined reference to `boost::filesystem::path::remove_filename()'
/usr/bin/ld: otbRadarsat2ImageMetadataInterface.cxx:(.text+0x3f4a): undefined reference to `boost::filesystem::path::operator/=(char const*)'
/usr/bin/ld: otbRadarsat2ImageMetadataInterface.cxx:(.text+0x4405): undefined reference to `boost::filesystem::path::remove_filename()'
/usr/bin/ld: otbRadarsat2ImageMetadataInterface.cxx:(.text+0x4410): undefined reference to `boost::filesystem::path::operator/=(char const*)'
/usr/bin/ld: CMakeFiles/OTBMetadata.dir/otbRadarsat2ImageMetadataInterface.cxx.o: in function `_GLOBAL__sub_I_otbRadarsat2ImageMetadataInterface.cxx':
otbRadarsat2ImageMetadataInterface.cxx:(.text.startup+0x3d): undefined reference to `boost::system::generic_category()'
/usr/bin/ld: otbRadarsat2ImageMetadataInterface.cxx:(.text.startup+0x42): undefined reference to `boost::system::generic_category()'
/usr/bin/ld: otbRadarsat2ImageMetadataInterface.cxx:(.text.startup+0x47): undefined reference to `boost::system::system_category()'
collect2: error: ld returned 1 exit status
make[5]: *** [Modules/Core/Metadata/src/CMakeFiles/OTBMetadata.dir/build.make:837: lib/libOTBMetadata-9.0.so.1] Error 1
make[4]: *** [CMakeFiles/Makefile2:2115: Modules/Core/Metadata/src/CMakeFiles/OTBMetadata.dir/all] Error 2
make[3]: *** [Makefile:156: all] Error 2
make[2]: *** [CMakeFiles/OTB.dir/build.make:87: OTB/src/OTB-stamp/OTB-build] Error 2
make[1]: *** [CMakeFiles/Makefile2:880: CMakeFiles/OTB.dir/all] Error 2
make: *** [Makefile:91: all] Error 2
```
![image](/uploads/970887fae368a7e2df947ab61949f09e/image.png)
Can't really see why this is happening because `OTBMetadata` links to `OTBBoostAdapters_LIBRARIES` and I see it in the compiler command line:
```
/usr/bin/c++ -fPIC -msse2 -mfpmath=sse -Wall -Wcast-align -Wdisabled-optimization -Wextra -Wformat=2 -Winvalid-pch -Wno-format-nonliteral -Wpointer-arith -Wunused -Wwrite-strings -funit-at-a-time -Wno-strict-overflow -Wno-deprecated -Wno-invalid-offsetof -Woverloaded-virtual -Wstrict-null-sentinel -O3 -DNDEBUG -Wl,--no-undefined -Wl,--no-undefined -shared -Wl,-soname,libOTBMetadata-9.0.so.1 -o ../../../../lib/libOTBMetadata-9.0.so.1 CMakeFiles/OTBMetadata.dir/otbWorldView2ImageMetadataInterfaceFactory.cxx.o CMakeFiles/OTBMetadata.dir/otbWorldView2ImageMetadataInterface.cxx.o CMakeFiles/OTBMetadata.dir/otbQuickBirdImageMetadataInterfaceFactory.cxx.o CMakeFiles/OTBMetadata.dir/otbQuickBirdImageMetadataInterface.cxx.o CMakeFiles/OTBMetadata.dir/otbImageMetadataInterfaceFactory.cxx.o CMakeFiles/OTBMetadata.dir/otbImageMetadataInterfaceBase.cxx.o CMakeFiles/OTBMetadata.dir/otbSpotImageMetadataInterfaceFactory.cxx.o CMakeFiles/OTBMetadata.dir/otbSpotImageMetadataInterface.cxx.o CMakeFiles/OTBMetadata.dir/otbDefaultImageMetadataInterfaceFactory.cxx.o CMakeFiles/OTBMetadata.dir/otbSarDefaultImageMetadataInterfaceFactory.cxx.o CMakeFiles/OTBMetadata.dir/otbOpticalDefaultImageMetadataInterfaceFactory.cxx.o CMakeFiles/OTBMetadata.dir/otbFormosatImageMetadataInterfaceFactory.cxx.o CMakeFiles/OTBMetadata.dir/otbFormosatImageMetadataInterface.cxx.o CMakeFiles/OTBMetadata.dir/otbOpticalImageMetadataInterfaceFactory.cxx.o CMakeFiles/OTBMetadata.dir/otbOpticalImageMetadataInterface.cxx.o CMakeFiles/OTBMetadata.dir/otbSpot6ImageMetadataInterfaceFactory.cxx.o CMakeFiles/OTBMetadata.dir/otbSpot6ImageMetadataInterface.cxx.o CMakeFiles/OTBMetadata.dir/otbIkonosImageMetadataInterfaceFactory.cxx.o CMakeFiles/OTBMetadata.dir/otbIkonosImageMetadataInterface.cxx.o CMakeFiles/OTBMetadata.dir/otbPleiadesImageMetadataInterfaceFactory.cxx.o CMakeFiles/OTBMetadata.dir/otbPleiadesImageMetadataInterface.cxx.o CMakeFiles/OTBMetadata.dir/otbSarImageMetadataInterfaceFactory.cxx.o CMakeFiles/OTBMetadata.dir/otbSarImageMetadataInterface.cxx.o CMakeFiles/OTBMetadata.dir/otbTerraSarXSarImageMetadataInterfaceFactory.cxx.o CMakeFiles/OTBMetadata.dir/otbTerraSarXSarImageMetadataInterface.cxx.o CMakeFiles/OTBMetadata.dir/otbSentinel1ImageMetadataInterfaceFactory.cxx.o CMakeFiles/OTBMetadata.dir/otbSentinel1ImageMetadataInterface.cxx.o CMakeFiles/OTBMetadata.dir/otbSentinel1ThermalNoiseLookupData.cxx.o CMakeFiles/OTBMetadata.dir/otbSentinel1CalibrationLookupData.cxx.o CMakeFiles/OTBMetadata.dir/otbCosmoImageMetadataInterfaceFactory.cxx.o CMakeFiles/OTBMetadata.dir/otbCosmoImageMetadataInterface.cxx.o CMakeFiles/OTBMetadata.dir/otbRadarsat2ImageMetadataInterfaceFactory.cxx.o CMakeFiles/OTBMetadata.dir/otbRadarsat2ImageMetadataInterface.cxx.o CMakeFiles/OTBMetadata.dir/otbNoDataHelper.cxx.o CMakeFiles/OTBMetadata.dir/otbFilterFunctionValues.cxx.o CMakeFiles/OTBMetadata.dir/otbMetaDataKey.cxx.o CMakeFiles/OTBMetadata.dir/otbImageMetadata.cxx.o CMakeFiles/OTBMetadata.dir/otbGeometryMetadata.cxx.o CMakeFiles/OTBMetadata.dir/otbSARMetadata.cxx.o CMakeFiles/OTBMetadata.dir/otbGeomMetadataSupplier.cxx.o CMakeFiles/OTBMetadata.dir/otbXMLMetadataSupplier.cxx.o CMakeFiles/OTBMetadata.dir/otbMetadataStorageInterface.cxx.o CMakeFiles/OTBMetadata.dir/otbMetadataSupplierInterface.cxx.o CMakeFiles/OTBMetadata.dir/otbDateTime.cxx.o CMakeFiles/OTBMetadata.dir/otbDimapMetadataHelper.cxx.o -L/home/grayshade/Projects/otb/superbuild_install/lib -Wl,-rpath,"/home/grayshade/Projects/otb/superbuild_install/lib:\$ORIGIN:" ../../../../lib/libOTBGdalAdapters-9.0.so.1 /home/grayshade/Projects/otb/superbuild_install/lib/libboost_filesystem.so.1.82.0 /home/grayshade/Projects/otb/superbuild_install/lib/libtinyxml.so /home/grayshade/Projects/otb/superbuild_install/lib/libboost_atomic.so.1.82.0 ../../../../lib/libOTBCommon-9.0.so.1 /home/grayshade/Projects/otb/superbuild_install/lib/libITKQuadEdgeMesh-4.13.so.1 /home/grayshade/Projects/otb/superbuild_install/lib/libITKMetaIO-4.13.so.1 /home/grayshade/Projects/otb/superbuild_install/lib/libz.so /home/grayshade/Projects/otb/superbuild_install/lib/libITKLabelMap-4.13.so.1 /home/grayshade/Projects/otb/superbuild_install/lib/libITKIOImageBase-4.13.so.1 /home/grayshade/Projects/otb/superbuild_install/lib/libITKBiasCorrection-4.13.so.1 /home/grayshade/Projects/otb/superbuild_install/lib/libITKPolynomials-4.13.so.1 /home/grayshade/Projects/otb/superbuild_install/lib/libITKFFT-4.13.so.1 /home/grayshade/Projects/otb/superbuild_install/lib/libfftw3.so /home/grayshade/Projects/otb/superbuild_install/lib/libfftw3_threads.so /home/grayshade/Projects/otb/superbuild_install/lib/libfftw3f.so /home/grayshade/Projects/otb/superbuild_install/lib/libfftw3f_threads.so /home/grayshade/Projects/otb/superbuild_install/lib/libITKOptimizersv4-4.13.so.1 /home/grayshade/Projects/otb/superbuild_install/lib/libITKOptimizers-4.13.so.1 /home/grayshade/Projects/otb/superbuild_install/lib/libITKKLMRegionGrowing-4.13.so.1 /home/grayshade/Projects/otb/superbuild_install/lib/libITKWatersheds-4.13.so.1 /home/grayshade/Projects/otb/superbuild_install/lib/libITKStatistics-4.13.so.1 /home/grayshade/Projects/otb/superbuild_install/lib/libitkNetlibSlatec-4.13.so.1 /home/grayshade/Projects/otb/superbuild_install/lib/libITKSpatialObjects-4.13.so.1 /home/grayshade/Projects/otb/superbuild_install/lib/libITKMesh-4.13.so.1 /home/grayshade/Projects/otb/superbuild_install/lib/libITKTransform-4.13.so.1 /home/grayshade/Projects/otb/superbuild_install/lib/libITKPath-4.13.so.1 /home/grayshade/Projects/otb/superbuild_install/lib/libITKCommon-4.13.so.1 /home/grayshade/Projects/otb/superbuild_install/lib/libitksys-4.13.so.1 /home/grayshade/Projects/otb/superbuild_install/lib/libITKVNLInstantiation-4.13.so.1 /home/grayshade/Projects/otb/superbuild_install/lib/libitkvnl_algo-4.13.so.1 /home/grayshade/Projects/otb/superbuild_install/lib/libitkvnl-4.13.so.1 /home/grayshade/Projects/otb/superbuild_install/lib/libitkv3p_netlib-4.13.so.1 /home/grayshade/Projects/otb/superbuild_install/lib/libitknetlib-4.13.so.1 /home/grayshade/Projects/otb/superbuild_install/lib/libitkvcl-4.13.so.1 -lm -lm -ldl /home/grayshade/Projects/otb/superbuild_install/lib/libgdal.so -Wl,-rpath-link,/home/grayshade/Projects/otb/superbuild_install/lib
```
PS: GitLab is dog-slow today.https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/issues/2382Orfeo Tool Box Provider not available in QGIS 3.36.0 Mainhead2024-03-25T14:18:11ZjbreitlerOrfeo Tool Box Provider not available in QGIS 3.36.0 MainheadI want to use Orfeo Tool Box within the QGIS Interface. I tried to follow the installation guide in the CookBook. I got an error so I reinstalled QGIS in the newst version (QGIS version 3.36.0-Maidenhead; OS version Windows 10 Version 20...I want to use Orfeo Tool Box within the QGIS Interface. I tried to follow the installation guide in the CookBook. I got an error so I reinstalled QGIS in the newst version (QGIS version 3.36.0-Maidenhead; OS version Windows 10 Version 2009). I then tried to install it again but the Orfeo Tool Box Provider isn't available in the "Plugins/Manage and Install Plugins.." toolbar.https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/issues/2379Import and manage QGis "Orfeo Toolbox Provider" plugin as external plugin2024-03-25T16:13:34ZTristan LaurentImport and manage QGis "Orfeo Toolbox Provider" plugin as external plugin# Resume
As described in https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/issues/2365 , the OTB provider plugin has been removed from QGIS Core. To ensure the compatibility with QGis, we have to manage the plugin internally as a third...# Resume
As described in https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/issues/2365 , the OTB provider plugin has been removed from QGIS Core. To ensure the compatibility with QGis, we have to manage the plugin internally as a third party maintained by OTB teams. The compatibility has been dropped in QGis 3.36.
# Todo
- [x] Create an OSGEO account to be able to publish the project. Do it before anything else as it may take time. https://www.osgeo.org/community/getting-started-osgeo/osgeo_userid/
- [x] Create a git repository and import code from https://github.com/qgis/QGIS/tree/ltr-3_34/python/plugins/otbprovider ensure that everything needed has been copied (see https://github.com/qgis/QGIS/pull/55406/files)
- [x] Be able to compile module, help can be found here https://plugins.qgis.org/ . This "plugin template" project can be a starting point https://plugins.qgis.org/plugins/pluginbuilder3/
- [x] Before submitting the project, check that we respect every requirements listed by qgis https://plugins.qgis.org/publish/
- [x] Submit the project at https://plugins.qgis.org/accounts/login/?next=/plugins/add/
- [x] Update the cookbook doc https://www.orfeo-toolbox.org/CookBook/QGISInterface.html10.0.0