commit otb for openSUSE:Factory
Hello community, here is the log from the commit of package otb for openSUSE:Factory checked in at 2019-11-29 15:59:42 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/otb (Old) and /work/SRC/openSUSE:Factory/.otb.new.26869 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "otb" Fri Nov 29 15:59:42 2019 rev:3 rq:751848 version:7.0.0 Changes: -------- --- /work/SRC/openSUSE:Factory/otb/otb.changes 2019-11-08 15:28:45.171193952 +0100 +++ /work/SRC/openSUSE:Factory/.otb.new.26869/otb.changes 2019-11-29 16:03:24.856793188 +0100 @@ -1,0 +2,29 @@ +Tue Nov 19 15:17:32 UTC 2019 - Dirk Stoecker <opensuse@dstoecker.de> + +- update to OTB version 7.0.0 + + * Documentation: + * The Cookbook has been refactored ! + * The Software guide has been removed, most of its content has been migrated + to the Cookbook. + * New applications: + * ZonalStatistics : Object based statistics computation + * TrainVectorRegression , TrainImagesRegression , VectorRegression and + ImageRegression : Refactoring of the regression framework, based on + the classification framework. + * LocalRxDetection and EndmemberNumberEstimation: Hyperspectral image processing. + * Other changes includes: + * The minimum CMake version required to compile OTB is now 3.10.2 . + * The Mosaic Remote Module has been moved inside the OTB. + * The Python wrapper support logging. + * Python 2 is not supported by the wrapper anymore + * The Java wrapper has been removed. + * Support for GDAL 3.X has been added, support for GDAL 1.X has been removed. + * Support for OpenCV 4 has been added. + * OTB has a new continuous integration system. + * New SAR sensor Model : CosmoSkymed + * A generic functorImageFilter has been added. + * Drop obsolete patch: otb-fix_VERSION_file_install.patch + * Cleanup spec file a lot + +------------------------------------------------------------------- Old: ---- OTB-6.6.1.tar.xz otb-fix_VERSION_file_install.patch temporalgapfilling-4fc4a71.tar.xz New: ---- OTB-7.0.0.tar.xz temporalgapfilling-0010532.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ otb.spec ++++++ --- /var/tmp/diff_new_pack.R21bCa/_old 2019-11-29 16:03:26.408792551 +0100 +++ /var/tmp/diff_new_pack.R21bCa/_new 2019-11-29 16:03:26.412792549 +0100 @@ -1,7 +1,7 @@ # # spec file for package otb # -# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2019 SUSE LLC. # Copyright (c) 2017 Angelos Tzotsos <tzotsos@opensuse.org>. # # All modifications and additions to the file contributed by third parties @@ -18,52 +18,45 @@ %define tarname OTB -%define filerelease 6.6 -%define libversion 6 +%define fullversion 7.0.0 +%define filerelease 7.0 +%define libversion 7 +# OTBTemporalGapFilling https://gitlab.orfeo-toolbox.org/jinglada/temporalgapfilling/ - latest git rev. (cmake follows master head) +%define tgfrev 0010532 # Enable remote module by default %bcond_without enable_remote_module Name: otb -Version: 6.6.1 +Version: %{fullversion} Release: 0 Summary: A C++ library for remote sensing image processing License: Apache-2.0 Group: Productivity/Scientific/Other -Url: http://www.orfeo-toolbox.org +URL: http://www.orfeo-toolbox.org Source0: https://www.orfeo-toolbox.org/packages/archives/OTB/%{tarname}-%{version}.tar.xz -# OTBTemporalGapFilling - http://tully.ups-tlse.fr/jordi/temporalgapfilling.git - git rev. selected by cmake file -Source10: temporalgapfilling-4fc4a71.tar.xz +Source10: temporalgapfilling-%{tgfrev}.tar.xz # PATCH-FIX-UPSTREAM - otb-fix_lib64_handling.patch: fix lib64 path handling Patch0: otb-fix_lib64_handling.patch -# PATCH-FIX-UPSTREAM - otb-fix_VERSION_file_install.patch: fix install path of VERSION -Patch1: otb-fix_VERSION_file_install.patch # PATCH-FIX-UPSTREAM https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/merge_requests/625 Patch2: otb-6.6.1-reproducible.patch # PATCH-FIX-OPENSUSE cmake file wants to clone the GIT repo. We are offline, so patch cmake file to be able to use our tarball instead of git clone Patch10: fix_non_git_usage.patch BuildRequires: boost-devel -BuildRequires: cmake >= 3.1.0 +BuildRequires: cmake >= 3.10.2 BuildRequires: fdupes -BuildRequires: xz -%if 0%{?suse_version} < 1500 -# With the default gcc 4.8, the compilation fails on Leap 42.x -BuildRequires: gcc7 -BuildRequires: gcc7-c++ -%else BuildRequires: gcc BuildRequires: gcc-c++ -%endif +BuildRequires: gdal-devel BuildRequires: geotiff-devel BuildRequires: insighttoolkit-devel BuildRequires: libOpenThreads-devel BuildRequires: libcurl-devel -# does not work with GDAL3 yet (on next major update replace this and the requires for devel with gdal-devel again) -BuildRequires: libgdal20-devel BuildRequires: libproj-devel BuildRequires: libqt5-linguist-devel BuildRequires: libqt5-qtbase-devel BuildRequires: libsvm-devel +BuildRequires: xz %if %{with enable_remote_module} BuildRequires: git # GSL is needed by OTBTemporalGapFilling module @@ -75,24 +68,18 @@ BuildRequires: libtool BuildRequires: muparser-devel BuildRequires: muparserx-devel -BuildRequires: ossim-devel -BuildRequires: python2-devel -BuildRequires: qwt6-devel -%if 0%{?suse_version} >= 1500 -BuildRequires: python2-numpy-devel -%else -BuildRequires: python-numpy-devel -%endif +# Actually opencv 4 should be supported, but not 4.1 %if 0%{?suse_version} >= 1550 BuildRequires: opencv3-devel %else -BuildRequires: opencv-devel < 4.0 +BuildRequires: opencv-devel < 4.1 %endif +BuildRequires: ossim-devel BuildRequires: python3-devel BuildRequires: python3-numpy-devel +BuildRequires: qwt6-devel BuildRequires: swig BuildRequires: tinyxml-devel -Obsoletes: OrfeoToolbox BuildRoot: %{_tmppath}/%{name}-%{version}-build %description @@ -105,7 +92,7 @@ %package devel Summary: ORFEO Toolbox development files -Group: Productivity/Scientific/Other +Group: Development/Libraries/C and C++ Requires: boost-devel Requires: cmake Requires: gcc @@ -115,7 +102,7 @@ Requires: lib%{name}%{libversion} = %{version} Requires: libOpenThreads-devel Requires: libcurl-devel -Requires: libgdal20-devel +Requires: gdal-devel Requires: libgeotiff-devel Requires: libglfw-devel Requires: libqt5-linguist-devel @@ -125,10 +112,11 @@ Requires: libtool Requires: muparser-devel Requires: muparserx-devel +# Actually opencv 4 should be supported, but not 4.1 %if 0%{?suse_version} >= 1550 Requires: opencv3-devel %else -Requires: opencv-devel < 4.0 +Requires: opencv-devel < 4.1 %endif Requires: ossim-devel Requires: qwt6-devel @@ -163,11 +151,9 @@ %package -n monteverdi Summary: Application based on OrfeoToolbox (OTB) for remote sensing image processing -Group: Development/Libraries +Group: System/Libraries Requires: lib%{name}%{libversion} = %{version} Requires: otb-qt -Obsoletes: monteverdi < %{version} -Provides: monteverdi = %{version} %description -n monteverdi Monteverdi is an image processing workshop based on the OTB library. It takes @@ -178,7 +164,6 @@ %package -n lib%{name}%{libversion} Summary: ORFEO Toolbox shared library of image processing algorithms Group: System/Libraries -Obsoletes: OrfeoToolbox %description -n lib%{name}%{libversion} ORFEO Toolbox (OTB) is a library of image processing algorithms. OTB @@ -193,7 +178,6 @@ Summary: ORFEO Toolbox graphical user interface applications Group: System/Libraries Requires: lib%{name}%{libversion} = %{version} -Obsoletes: OrfeoToolbox %description -n %{name}-qt ORFEO Toolbox (OTB) is a library of image processing algorithms. OTB @@ -204,31 +188,26 @@ This package contains the GUI tools illustrating OTB features (using plugins provided by otb package). -%package -n python2-%{name} -Summary: ORFEO Toolbox Python2 API for applications -Group: Development/Languages/Python -Requires: lib%{name}%{libversion} = %{version} -Obsoletes: OrfeoToolbox - -%description -n python2-%{name} -ORFEO Toolbox Python 2 API for applications. - %package -n python3-%{name} -Summary: ORFEO Toolbox Python2 API for applications +Summary: ORFEO Toolbox Python3 API for applications Group: Development/Languages/Python Requires: lib%{name}%{libversion} = %{version} -Obsoletes: OrfeoToolbox +Obsoletes: python2-%{name} %description -n python3-%{name} -ORFEO Toolbox Python 3 API for applications. +ORFEO Toolbox (OTB) is a library of image processing algorithms. OTB +is based on the medical image processing library ITK and offers +particular functionalities for remote sensing image processing in +general and for high spatial resolution images in particular. + +This package contains the ORFEO Toolbox Python 3 API for applications. %prep %if %{with enable_remote_module} %setup -q -n temporalgapfilling -b 10 %endif -%setup -q -n %{tarname}-release-%{filerelease} +%setup -q -c %patch0 -p1 -%patch1 -p1 %patch2 -p1 %patch10 -p0 %if %{with enable_remote_module} @@ -236,17 +215,7 @@ %endif %build -# Disable MPI for now since OTB apps do not start easily (we must add MPI libs to LD_LIBRARY_PATH to start apps) -# # Find MPI -# if [ -f %{_libdir}/mpi/gcc/openmpi/bin/mpivars.sh ]; then -# source %{_libdir}/mpi/gcc/openmpi/bin/mpivars.sh -# fi - %cmake \ -%if 0%{?suse_version} < 1500 - -DCMAKE_C_COMPILER=gcc-7 \ - -DCMAKE_CXX_COMPILER=g++-7 \ -%endif -DCMAKE_SHARED_LINKER_FLAGS="-Wl,--as-needed -Wl,-z,now" \ -DBUILD_SHARED_LIBS:BOOL=ON \ -DBUILD_EXAMPLES:BOOL=OFF \ @@ -255,7 +224,6 @@ -DOTB_USE_CURL:BOOL=ON \ -DOTB_USE_LIBKML:BOOL=OFF \ -DOTB_USE_LIBSVM:BOOL=ON \ - -DOTB_USE_MAPNIK:BOOL=OFF \ -DOTB_USE_MPI:BOOL=OFF \ -DOTB_USE_SPTW:BOOL=ON \ -DOTB_USE_MUPARSER:BOOL=ON \ @@ -269,13 +237,10 @@ -DOTB_USE_QWT:BOOL=ON \ -DQWT_INCLUDE_DIR=%{_includedir}/qt5/qwt6 \ -DOTB_USE_SIFTFAST:BOOL=ON \ - -DOTB_WRAP_JAVA:BOOL=OFF \ -DOTB_WRAP_PYTHON:BOOL=ON \ - -DOTB_WRAP_PYTHON3:BOOL=ON \ -DOTB_INSTALL_LIBRARY_DIR:STRING=%{_lib} \ - -DOTB_INSTALL_PYTHON_DIR:STRING=%{_lib}/otb/python \ - -DOTB_INSTALL_PYTHON3_DIR:STRING=%{_lib}/otb/python3 \ - -DOTB_INSTALL_APP_DIR:STRING=%{_lib}/otb/applications \ + -DOTB_INSTALL_PYTHON_DIR:STRING=%{_lib}/otb/python3 \ + -DOTB_INSTALL_APP_DIR:STRING=%{_lib}/otb%{libversion}/applications \ %if %{with enable_remote_module} -DModule_OTBTemporalGapFilling:BOOL=ON \ %endif @@ -284,33 +249,9 @@ make VERBOSE=1 %{?_smp_mflags} %install -%cmake_install -# install -d %%{buildroot}%{_sysconfdir}/ld.so.conf.d -# LDCONFIG_FILE=%%{buildroot}%{_sysconfdir}/ld.so.conf.d/otb.conf -# %%if "%%{_lib}" == "lib64" -# cat > "$LDCONFIG_FILE" <<EOF -# # Orfeo Toolbox related search paths -# /usr/lib64/otb -# EOF -# %%else -# cat > "$LDCONFIG_FILE" <<EOF -# # Orfeo Toolbox related search paths -# /usr/lib/otb -# EOF -# %%endif - -# %%if "%%{_lib}" == "lib64" -# mkdir -p %%{buildroot}/usr/lib64 -# mv %%{buildroot}/usr/lib/* %%{buildroot}/usr/lib64/ -# %%endif - -rm -rf %{buildroot}%{_datadir}/doc -rm -rf %{buildroot}%{_libexecdir}/debug -rm -rf %{buildroot}/usr/lib/*.a -# Remove spurious executable bits -chmod 0644 %{buildroot}/usr/share/applications/monteverdi.desktop -chmod 0644 %{buildroot}/usr/share/pixmaps/monteverdi.xpm +%cmake_install +rm -rf %{buildroot}%{_datadir}/%{name}/swig %fdupes %{buildroot}/%{_prefix} @@ -319,9 +260,15 @@ %postun -n lib%{name}%{libversion} -p /sbin/ldconfig %files -n %{name}-bin +%license LICENSE +%doc NOTICE PSC.md README.md RELEASE_NOTES.txt %defattr(755,root,root,755) %{_bindir}/otbcli_* %{_bindir}/otbcli +%{_bindir}/otbTestDriver +%{_bindir}/otbApplicationLauncherCommandLine +%{_bindir}/otbApplicationLauncherQt +%{_bindir}/otbQgisDescriptor %files -n %{name}-qt %defattr(755,root,root,755) @@ -336,34 +283,21 @@ %defattr(755,root,root,755) %{_bindir}/monteverdi %{_bindir}/mapla +%defattr(644,root,root,755) %{_datadir}/applications/monteverdi.desktop %{_datadir}/icons/* %{_datadir}/pixmaps/monteverdi* %files -n lib%{name}%{libversion} %defattr(644,root,root,755) -# %config %{_sysconfdir}/ld.so.conf.d/otb.conf -%dir %{_libdir}/otb/ +%dir %{_libdir}/otb%{libversion}/ %{_libdir}/*.so.* -%dir %{_libdir}/otb/applications/ -%{_libdir}/otb/applications/otbapp_*.so -%defattr(755,root,root,755) -%{_bindir}/otbTestDriver -%{_bindir}/otbApplicationLauncherCommandLine -%{_bindir}/otbApplicationLauncherQt -%{_bindir}/otbQgisDescriptor -%dir %{_datadir}/otb -%dir %{_datadir}/otb/description -%{_datadir}/otb/description/*.txt -%{_datadir}/otb/VERSION - -%files -n python2-%{name} -%defattr(644,root,root,755) -%dir %{_libdir}/otb/python/ -%{_libdir}/otb/python/* +%dir %{_libdir}/otb%{libversion}/applications/ +%{_libdir}/otb%{libversion}/applications/otbapp_*.so %files -n python3-%{name} %defattr(644,root,root,755) +%dir %{_libdir}/otb/ %dir %{_libdir}/otb/python3/ %{_libdir}/otb/python3/* @@ -372,5 +306,10 @@ %{_includedir}/OTB-%{filerelease}/ %{_libdir}/lib*.so %{_libdir}/cmake/ +%dir %{_datadir}/otb +%dir %{_datadir}/otb/description +%{_datadir}/otb/description/*.txt +%exclude %{_datadir}/doc +%doc CONTRIBUTING.md %changelog ++++++ OTB-6.6.1.tar.xz -> OTB-7.0.0.tar.xz ++++++ /work/SRC/openSUSE:Factory/otb/OTB-6.6.1.tar.xz /work/SRC/openSUSE:Factory/.otb.new.26869/OTB-7.0.0.tar.xz differ: char 26, line 1 ++++++ temporalgapfilling-4fc4a71.tar.xz -> temporalgapfilling-0010532.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/temporalgapfilling/.git/ORIG_HEAD new/temporalgapfilling/.git/ORIG_HEAD --- old/temporalgapfilling/.git/ORIG_HEAD 2018-02-11 15:51:22.899015015 +0100 +++ new/temporalgapfilling/.git/ORIG_HEAD 1970-01-01 01:00:00.000000000 +0100 @@ -1 +0,0 @@ -ced8d2120eaaf48c1c3813433d3c5568a929541c diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/temporalgapfilling/.git/config new/temporalgapfilling/.git/config --- old/temporalgapfilling/.git/config 2018-02-11 15:51:10.598969187 +0100 +++ new/temporalgapfilling/.git/config 2019-11-09 17:09:20.000000000 +0100 @@ -4,7 +4,7 @@ bare = false logallrefupdates = true [remote "origin"] - url = http://tully.ups-tlse.fr/jordi/temporalgapfilling.git + url = https://gitlab.orfeo-toolbox.org/jinglada/temporalgapfilling fetch = +refs/heads/*:refs/remotes/origin/* [branch "master"] remote = origin diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/temporalgapfilling/.git/hooks/pre-commit.sample new/temporalgapfilling/.git/hooks/pre-commit.sample --- old/temporalgapfilling/.git/hooks/pre-commit.sample 2018-02-11 15:51:09.310964389 +0100 +++ new/temporalgapfilling/.git/hooks/pre-commit.sample 2019-11-09 17:09:19.000000000 +0100 @@ -12,7 +12,7 @@ against=HEAD else # Initial commit: diff against an empty tree object - against=4b825dc642cb6eb9a060e54bf8d69288fbee4904 + against=$(git hash-object -t tree /dev/null) fi # If you want to allow non-ASCII filenames set this variable to true. Binary files old/temporalgapfilling/.git/index and new/temporalgapfilling/.git/index differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/temporalgapfilling/.git/logs/HEAD new/temporalgapfilling/.git/logs/HEAD --- old/temporalgapfilling/.git/logs/HEAD 2018-02-11 15:51:22.899015015 +0100 +++ new/temporalgapfilling/.git/logs/HEAD 2019-11-09 17:09:20.000000000 +0100 @@ -1,2 +1 @@ -0000000000000000000000000000000000000000 ced8d2120eaaf48c1c3813433d3c5568a929541c Bruno Friedmann <bruno@ioda-net.ch> 1518360670 +0100 clone: from http://tully.ups-tlse.fr/jordi/temporalgapfilling.git -ced8d2120eaaf48c1c3813433d3c5568a929541c 4fc4a71acf7b9b051cda5a3b950de2cdb9d26287 Bruno Friedmann <bruno@ioda-net.ch> 1518360682 +0100 reset: moving to 4fc4a71acf7b9b051cda5a3b950de2cdb9d26287 +0000000000000000000000000000000000000000 0010532c706a7d5fcd5a1e754cf4bce49d685e48 Antoine Belvire <antoine.belvire@opensuse.org> 1573315760 +0100 clone: from https://gitlab.orfeo-toolbox.org/jinglada/temporalgapfilling diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/temporalgapfilling/.git/logs/refs/heads/master new/temporalgapfilling/.git/logs/refs/heads/master --- old/temporalgapfilling/.git/logs/refs/heads/master 2018-02-11 15:51:22.899015015 +0100 +++ new/temporalgapfilling/.git/logs/refs/heads/master 2019-11-09 17:09:20.000000000 +0100 @@ -1,2 +1 @@ -0000000000000000000000000000000000000000 ced8d2120eaaf48c1c3813433d3c5568a929541c Bruno Friedmann <bruno@ioda-net.ch> 1518360670 +0100 clone: from http://tully.ups-tlse.fr/jordi/temporalgapfilling.git -ced8d2120eaaf48c1c3813433d3c5568a929541c 4fc4a71acf7b9b051cda5a3b950de2cdb9d26287 Bruno Friedmann <bruno@ioda-net.ch> 1518360682 +0100 reset: moving to 4fc4a71acf7b9b051cda5a3b950de2cdb9d26287 +0000000000000000000000000000000000000000 0010532c706a7d5fcd5a1e754cf4bce49d685e48 Antoine Belvire <antoine.belvire@opensuse.org> 1573315760 +0100 clone: from https://gitlab.orfeo-toolbox.org/jinglada/temporalgapfilling diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/temporalgapfilling/.git/logs/refs/remotes/origin/HEAD new/temporalgapfilling/.git/logs/refs/remotes/origin/HEAD --- old/temporalgapfilling/.git/logs/refs/remotes/origin/HEAD 2018-02-11 15:51:10.598969187 +0100 +++ new/temporalgapfilling/.git/logs/refs/remotes/origin/HEAD 2019-11-09 17:09:20.000000000 +0100 @@ -1 +1 @@ -0000000000000000000000000000000000000000 ced8d2120eaaf48c1c3813433d3c5568a929541c Bruno Friedmann <bruno@ioda-net.ch> 1518360670 +0100 clone: from http://tully.ups-tlse.fr/jordi/temporalgapfilling.git +0000000000000000000000000000000000000000 0010532c706a7d5fcd5a1e754cf4bce49d685e48 Antoine Belvire <antoine.belvire@opensuse.org> 1573315760 +0100 clone: from https://gitlab.orfeo-toolbox.org/jinglada/temporalgapfilling Binary files old/temporalgapfilling/.git/objects/pack/pack-b8d989d6ddc71b46e578e957f3eacd005c9cf27b.idx and new/temporalgapfilling/.git/objects/pack/pack-b8d989d6ddc71b46e578e957f3eacd005c9cf27b.idx differ Binary files old/temporalgapfilling/.git/objects/pack/pack-b8d989d6ddc71b46e578e957f3eacd005c9cf27b.pack and new/temporalgapfilling/.git/objects/pack/pack-b8d989d6ddc71b46e578e957f3eacd005c9cf27b.pack differ Binary files old/temporalgapfilling/.git/objects/pack/pack-c4d5926a3f6c7bf7bf210d49d2a4af0c719f3bd6.idx and new/temporalgapfilling/.git/objects/pack/pack-c4d5926a3f6c7bf7bf210d49d2a4af0c719f3bd6.idx differ Binary files old/temporalgapfilling/.git/objects/pack/pack-c4d5926a3f6c7bf7bf210d49d2a4af0c719f3bd6.pack and new/temporalgapfilling/.git/objects/pack/pack-c4d5926a3f6c7bf7bf210d49d2a4af0c719f3bd6.pack differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/temporalgapfilling/.git/packed-refs new/temporalgapfilling/.git/packed-refs --- old/temporalgapfilling/.git/packed-refs 2018-02-11 15:51:10.598969187 +0100 +++ new/temporalgapfilling/.git/packed-refs 2019-11-09 17:09:20.000000000 +0100 @@ -3,7 +3,8 @@ ced8d2120eaaf48c1c3813433d3c5568a929541c refs/remotes/origin/bug_multi_year b371a4401d67c8838502243a2a15ffa36539d6ce refs/remotes/origin/compilerflags 4fc4a71acf7b9b051cda5a3b950de2cdb9d26287 refs/remotes/origin/develop -ced8d2120eaaf48c1c3813433d3c5568a929541c refs/remotes/origin/master +0010532c706a7d5fcd5a1e754cf4bce49d685e48 refs/remotes/origin/master 2bc58a4357dd8e18e954dfd801e1b8af05e39f88 refs/remotes/origin/module a64ee23b382b3f06446bc83e343fbb360fb9e098 refs/remotes/origin/multicomponentbug eaa0cdb69f714609931969d078c73f080b230069 refs/remotes/origin/refactorGFfunction +2a7318107d7008a7314f94ab137455db034aa0f4 refs/remotes/origin/remove_SetDocName diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/temporalgapfilling/.git/refs/heads/master new/temporalgapfilling/.git/refs/heads/master --- old/temporalgapfilling/.git/refs/heads/master 2018-02-11 15:51:22.899015015 +0100 +++ new/temporalgapfilling/.git/refs/heads/master 2019-11-09 17:09:20.000000000 +0100 @@ -1 +1 @@ -4fc4a71acf7b9b051cda5a3b950de2cdb9d26287 +0010532c706a7d5fcd5a1e754cf4bce49d685e48 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/temporalgapfilling/app/otbImageTimeSeriesGapFilling.cxx new/temporalgapfilling/app/otbImageTimeSeriesGapFilling.cxx --- old/temporalgapfilling/app/otbImageTimeSeriesGapFilling.cxx 2018-02-11 15:51:22.891014986 +0100 +++ new/temporalgapfilling/app/otbImageTimeSeriesGapFilling.cxx 2019-11-09 17:09:20.000000000 +0100 @@ -83,7 +83,6 @@ SetDescription("Time series gapfilling."); // Documentation - SetDocName("Image Time Series Gap Filling"); SetDocLongDescription("This application performs a temporal gapfilling" "of an image time series."); SetDocLink("http://tully.ups-tlse.fr/jordi/temporalgapfilling#tab-readme"); @@ -201,12 +200,14 @@ { std::string in_date_file{""}; std::string out_date_file{""}; + std::tm first_in_date{}; if(IsParameterEnabled("id")) { in_date_file = GetParameterString("id"); otbAppLogINFO( "Using date file " << in_date_file ); auto date_vec = GapFilling::parse_date_file(in_date_file); + first_in_date = date_vec[0]; std::vector<TValue> doy_vector(date_vec.size(), TValue{0}); std::transform(std::begin(date_vec), std::end(date_vec), std::begin(doy_vector), GapFilling::doy_multi_year()); @@ -219,9 +220,12 @@ otbAppLogINFO( "Using output date file " << out_date_file ); auto date_vec = GapFilling::parse_date_file(out_date_file); + auto first_out_date = date_vec[0]; + auto d_init = dv[0]; + if(first_out_date < first_in_date) d_init = GapFilling::doy(first_out_date); std::vector<TValue> doy_vector(date_vec.size(), TValue{0}); std::transform(std::begin(date_vec), std::end(date_vec), - std::begin(doy_vector), GapFilling::doy_multi_year()); + std::begin(doy_vector), GapFilling::doy_multi_year(d_init)); odv = TPixel(doy_vector.data(), doy_vector.size()); } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/temporalgapfilling/include/otbDateUtils.h new/temporalgapfilling/include/otbDateUtils.h --- old/temporalgapfilling/include/otbDateUtils.h 2018-02-11 15:51:22.891014986 +0100 +++ new/temporalgapfilling/include/otbDateUtils.h 2019-11-09 17:09:20.000000000 +0100 @@ -22,6 +22,9 @@ #include <vnl/vnl_vector.h> #include <boost/algorithm/string.hpp> +/// Compare 2 dates +bool operator<(std::tm x, std::tm y); + namespace GapFilling { using PrecisionType = double; using VectorType = vnl_vector<PrecisionType>; @@ -42,12 +45,18 @@ /// Return the day of year unsigned int doy(const std::tm& d); + /** Functor with state to return the day of the year dealing with dates spread over multiple years adding 365*year_count to the doy. Does not take into account leap years. */ struct doy_multi_year { + doy_multi_year() = default; + doy_multi_year(unsigned int d_prev_init) : d_prev{d_prev_init} + { + first_date = false; + } unsigned int operator()(const std::tm& d) { auto tmp_doy = doy(d); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/temporalgapfilling/include/otbTemporalGapFilling.h new/temporalgapfilling/include/otbTemporalGapFilling.h --- old/temporalgapfilling/include/otbTemporalGapFilling.h 2018-02-11 15:51:10.606969217 +0100 +++ new/temporalgapfilling/include/otbTemporalGapFilling.h 2019-11-09 17:09:20.000000000 +0100 @@ -322,7 +322,7 @@ { auto lvp = lv[i]; auto nvp = nv[i]; - if(m[i]==(valid_value)) + if(m[i]==valid_value) result[i] = p[i]; else { @@ -450,16 +450,27 @@ std::size_t nbValidDates{0}; for(size_t i = 0; i < nbDates; i++) { - if(m[i]==(valid_value)) + if(m[i]==valid_value) { x[nbValidDates] = d[i]; + //Ensure that the dates are strictly increasing + if(nbValidDates>0 && + (x[nbValidDates]-x[nbValidDates-1])<std::numeric_limits<double>::epsilon()) + { + //1 epsilon is not enough for gsl + x[nbValidDates] = x[nbValidDates-1] + 0.1; + } y[nbValidDates] = p[i]; nbValidDates++; } } + if(nbValidDates < 2) + { + return p; + } gsl_interp_accel* acc = gsl_interp_accel_alloc(); gsl_spline* spline = select_spline_type(nbValidDates); - if(!spline) return p; + if(spline == nullptr) return p; gsl_spline_init(spline, x, y, nbValidDates); // the real interpolation PixelType result(nbDates); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/temporalgapfilling/src/otbDateUtils.cxx new/temporalgapfilling/src/otbDateUtils.cxx --- old/temporalgapfilling/src/otbDateUtils.cxx 2018-02-11 15:51:22.891014986 +0100 +++ new/temporalgapfilling/src/otbDateUtils.cxx 2019-11-09 17:09:20.000000000 +0100 @@ -20,6 +20,16 @@ #include <cmath> #include <algorithm> + +bool operator<(std::tm x, std::tm y) +{ + if( y.tm_year < x.tm_year ) return false; + if( y.tm_year == x.tm_year && y.tm_mon < x.tm_mon) return false; + if( y.tm_year == x.tm_year && y.tm_mon == x.tm_mon + && y.tm_mday < x.tm_mday ) return false; + return true; +} + namespace GapFilling { std::vector<std::string> string_split(const std::string& s, const std::string& sep) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/temporalgapfilling/test/SplineGapfillingTest.cxx new/temporalgapfilling/test/SplineGapfillingTest.cxx --- old/temporalgapfilling/test/SplineGapfillingTest.cxx 2018-02-11 15:51:10.606969217 +0100 +++ new/temporalgapfilling/test/SplineGapfillingTest.cxx 2019-11-09 17:09:20.000000000 +0100 @@ -33,6 +33,11 @@ VectorType{0, 1, 2, 3, 4, 5, 6}, VectorType{0, 1, 2, 3, 4, 5, 6}, VectorType{1, 1, 2, 3, 4, 1, 1}), + std::make_tuple(VectorType{0, 0, 0, 0, 0, 0, 0, 0}, //case with a dup input date + VectorType{1, 1, 2, 3, 3, 4, 1, 1}, + VectorType{0, 1, 2, 3, 3, 4, 5, 6}, + VectorType{0, 1, 2, 3, 4, 5, 6}, + VectorType{1, 1, 2, 3, 4, 1, 1}), std::make_tuple(VectorType{0,0,0,0,0,0,0,0,0,0}, VectorType{1,1.54030,1.34636,2.08887,3.04234,5.99120,5.87204,7.30059,8.39186,9.77669}, VectorType{0,1.42074,2.45465,3.07056,3.62160,4.52054,5.86029,7.32849,8.49468,9.20606}, @@ -71,11 +76,13 @@ auto m = std::get<0>(t); auto p = std::get<1>(t); auto d = std::get<2>(t); + auto od = std::get<3>(t); auto e = std::get<4>(t); - GFF gfd{GapFilling::vectorToPixel(d)}; + GFF gfd{GapFilling::vectorToPixel(d), GapFilling::vectorToPixel(od)}; PixelType mask(m.data(), m.size()); PixelType pix(p.data(), p.size()); PixelType dat(d.data(), d.size()); + PixelType odat(od.data(), od.size()); PixelType expect(e.data(), e.size()); auto res = gfd(pix, mask); @@ -84,6 +91,7 @@ std::cout << "-- with dates --" << std::endl; std::cout << mask << std::endl; std::cout << dat << std::endl; + std::cout << odat << std::endl; std::cout << pix << std::endl; std::cout << expect << std::endl; std::cout << res << std::endl;
participants (1)
-
root