diff --git a/CMake/OTBModuleExternal.cmake b/CMake/OTBModuleExternal.cmake index f629eeeab4d37cc4108f85b6b958bbc428597155..4badc425a6adca98fe7ee4c75500c76cb360a4bb 100644 --- a/CMake/OTBModuleExternal.cmake +++ b/CMake/OTBModuleExternal.cmake @@ -36,7 +36,7 @@ if(NOT EXISTS ${OTB_CMAKE_DIR}/OTBModuleMacros.cmake) message(FATAL_ERROR "Modules can only be built against an OTB build tree; " "they cannot be built against an OTB install tree. You can build " "your module as a standalone CMake project instead, by activating " - "the BUILD_MODULE_AS_STANDALONE option. Beware that dependency " + "the OTB_BUILD_MODULE_AS_STANDALONE option. Beware that dependency " "between remote modules will NOT be tracked.") endif() endif() diff --git a/CMakeLists.txt b/CMakeLists.txt index bf229cf445795ca6223fbb312ddde3ed51aff8de..405dfb09640abb358d93ce4d27be2e09170e2b23 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -132,7 +132,7 @@ set(main_project_name ${_OTBModuleMacros_DEFAULT_LABEL}) #----------------------------------------------------------------------------- # OTB version number. set(OTB_VERSION_MAJOR "7") -set(OTB_VERSION_MINOR "0") +set(OTB_VERSION_MINOR "1") set(OTB_VERSION_PATCH "0") set(OTB_VERSION_STRING "${OTB_VERSION_MAJOR}.${OTB_VERSION_MINOR}.${OTB_VERSION_PATCH}") diff --git a/Data/Baseline/OTB-Applications/Files/apTvClSampleSelectionOut.sqlite b/Data/Baseline/OTB-Applications/Files/apTvClSampleSelectionOut.sqlite index be44e2a40b459e101f9e04296091670039da9536..e96f16fce7d86851ae076a7953951804eb75db48 100644 --- a/Data/Baseline/OTB-Applications/Files/apTvClSampleSelectionOut.sqlite +++ b/Data/Baseline/OTB-Applications/Files/apTvClSampleSelectionOut.sqlite @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:827b7ce8d1b924a434f5e2ead16d2e718c22b08b2bcfa1badb9b1e02b7fb70c6 -size 55296 +oid sha256:eecdb9ac7cb7dcb8a0ad1c7d7e7371264f2a21498e6f9699a1996fd49a5dfa34 +size 86016 diff --git a/Data/Baseline/OTB/Files/ioTvMultiDatasetReading1.2.txt b/Data/Baseline/OTB/Files/ioTvMultiDatasetReading1.2.txt new file mode 100644 index 0000000000000000000000000000000000000000..288b601d5c6e7deaf3513079a5f728858e2d138a --- /dev/null +++ b/Data/Baseline/OTB/Files/ioTvMultiDatasetReading1.2.txt @@ -0,0 +1,122 @@ +VectorImage (0x22abdc0) + RTTI typeinfo: otb::VectorImage + Reference Count: 3 + Modified Time: 91 + Debug: Off + Object Name: + Observers: + none + Source: (0x22a5720) + Source output name: Primary + Release Data: Off + Data Released: False + Global Release Data: Off + PipelineMTime: 20 + UpdateMTime: 0 + RealTimeStamp: 0 seconds + LargestPossibleRegion: + Dimension: 2 + Index: [0, 0] + Size: [4800, 4800] + BufferedRegion: + Dimension: 2 + Index: [0, 0] + Size: [0, 0] + RequestedRegion: + Dimension: 2 + Index: [0, 0] + Size: [0, 0] + Spacing: [231.65635826375, 231.656358263958] + Origin: [-12231339.8881539, 6671587.28982087] + Direction: +1 0 +0 -1 + + IndexToPointMatrix: +231.65635826375 0 +0 -231.656358263958 + + PointToIndexMatrix: +0.00431673884323719 0 +0 -0.00431673884323331 + + Inverse Direction: +1 0 +0 -1 + + VectorLength: 1 + PixelContainer: + ImportImageContainer (0x22a5650) + RTTI typeinfo: itk::ImportImageContainer + Reference Count: 1 + Modified Time: 11 + Debug: Off + Object Name: + Observers: + none + Pointer: 0 + Container manages memory: true + Size: 0 + Capacity: 0 + ---> DataType = 0 + ---> DriverLongName = HDF4 Dataset + ---> DriverShortName = HDF4Image + ---> GeoTransform[0] = -12231455.716333 + ---> GeoTransform[1] = 231.65635826375 + ---> GeoTransform[2] = 0 + ---> GeoTransform[3] = 6671703.118 + ---> GeoTransform[4] = 0 + ---> GeoTransform[5] = -231.656358263958 + ---> LowerLeftCorner[0] = -12231455.716333 + ---> LowerLeftCorner[1] = 5559752.598333 + ---> LowerRightCorner[0] = -11119505.196667 + ---> LowerRightCorner[1] = 5559752.598333 + ---> Metadata_0 = DAYNIGHTFLAG=D + ---> Metadata_1 = EASTBOUNDINGCOORDINATE=-155.559418 + ---> Metadata_10 = PROCESSINGCENTER=MODAPS + ---> Metadata_11 = PROCESSINGENVIRONMENT=Linux minion5336 2.6.22.19-server-2mdv #1 SMP Mon May 5 21:13:00 EDT 2008 i686 IntelR XeonR CPU E5430 @ 2.66GHz GNU/Linux + ---> Metadata_12 = PRODUCTIONDATETIME=2008-12-03 19:03:08 + ---> Metadata_13 = RANGEBEGINNINGDATE=2006-08-21 + ---> Metadata_14 = RANGEBEGINNINGTIME=00:00:00 + ---> Metadata_15 = RANGEENDINGDATE=2006-08-28 + ---> Metadata_16 = RANGEENDINGTIME=23:59:59 + ---> Metadata_17 = scale_factor=0.0001 + ---> Metadata_18 = SHORTNAME=MOD09Q1G_EVI + ---> Metadata_19 = SOUTHBOUNDINGCOORDINATE=50.000000 + ---> Metadata_2 = HDFEOSVersion=HDFEOS_V2.9 + ---> Metadata_20 = TileID=51007003 + ---> Metadata_21 = valid_range=-2000, 10000 + ---> Metadata_22 = VERSIONID=5 + ---> Metadata_23 = VERTICALTILENUMBER=03 + ---> Metadata_24 = WESTBOUNDINGCOORDINATE=-180.000000 + ---> Metadata_25 = _FillValue=32767 + ---> Metadata_3 = HORIZONTALTILENUMBER=07 + ---> Metadata_4 = INPUTPOINTER=MOD09Q1.A2005001.h07v03.005.2007352095846.hdf,MOD09Q1.A2005009.h07v03.005.2007356042935.hdf,MOD09Q1.A2005017.h07v03.005.2007358144925.hdf,MOD09Q1.A2005025.h07v03.005.2007362053649.hdf,MOD09Q1.A2005033.h07v03.005.2007364181843.hdf,MOD09Q1.A2005041.h07v03.005.2008001225607.hdf,MOD09Q1.A2005049.h07v03.005.2008199094111.hdf,MOD09Q1.A2005057.h07v03.005.2008200060041.hdf,MOD09Q1.A2005065.h07v03.005.2008011022036.hdf,MOD09Q1.A2005073.h07v03.005.2008011212125.hdf,MOD09Q1.A2005081.h07v03.005.2008013054005.hdf,MOD09Q1.A2005089.h07v03.005.2008013133454.hdf,MOD09Q1.A2005097.h07v03.005.2008015013356.hdf,MOD09Q1.A2005105.h07v03.005.2008018163918.hdf,MOD09Q1.A2005113.h07v03.005.2008020052027.hdf,MOD09Q1.A2005121.h07v03.005.2008022182402.hdf,MOD09Q1.A2005129.h07v03.005.2008024223714.hdf,MOD09Q1.A2005137.h07v03.005.2008032153227.hdf,MOD09Q1.A2005145.h07v03.005.2008034052158.hdf,MOD09Q1.A2005153.h07v03.005.2008233033009.hdf,MOD09Q1.A2005161.h07v03.005.2008036233027.hdf,MOD09Q1.A2005169.h07v03.005.2008039165041.hdf,MOD09Q1.A2005177.h07v03.005.2008205013722.hdf,MOD09Q1.A2005185.h07v03.005.2008044090710.hdf,MOD09Q1.A2005193.h07v03.005.2008047145217.hdf,MOD09Q1.A2005201.h07v03.005.2008210120745.hdf,MOD09Q1.A2005209.h07v03.005.2008053125802.hdf,MOD09Q1.A2005217.h07v03.005.2008055040352.hdf,MOD09Q1.A2005225.h07v03.005.2008058000740.hdf,MOD09Q1.A2005233.h07v03.005.2008213101122.hdf,MOD09Q1.A2005241.h07v03.005.2008064002202.hdf,MOD09Q1.A2005249.h07v03.005.2008066033650.hdf,MOD09Q1.A2005257.h07v03.005.2008217124311.hdf,MOD09Q1.A2005265.h07v03.005.2008219075840.hdf,MOD09Q1.A2005273.h07v03.005.2008071102803.hdf,MOD09Q1.A2005281.h07v03.005.2008073133931.hdf,MOD09Q1.A2005289.h07v03.005.2008075034036.hdf,MOD09Q1.A2005297.h07v03.005.2008076174351.hdf,MOD09Q1.A2005305.h07v03.005.2008080141752.hdf,MOD09Q1.A2005313.h07v03.005.2008083221201.hdf,MOD09Q1.A2005321.h07v03.005.2008262094029.hdf,MOD09Q1.A2005329.h07v03.005.2008086084311.hdf,MOD09Q1.A2005337.h07v03.005.2008220163223.hdf,MOD09Q1.A2005345.h07v03.005.2008221215931.hdf,MOD09Q1.A2005353.h07v03.005.2008092055621.hdf,MOD09Q1.A2005361.h07v03.005.2008095024133.hdf,MOD09Q1.A2006001.h07v03.005.2008070193427.hdf,MOD09Q1.A2006009.h07v03.005.2008072135612.hdf,MOD09Q1.A2006017.h07v03.005.2008276212353.hdf,MOD09Q1.A2006025.h07v03.005.2008076154117.hdf,MOD09Q1.A2006033.h07v03.005.2008078191028.hdf,MOD09Q1.A2006041.h07v03.005.2008080125013.hdf,MOD09Q1.A2006049.h07v03.005.2008081182250.hdf,MOD09Q1.A2006057.h07v03.005.2008085025553.hdf,MOD09Q1.A2006065.h07v03.005.2008087112458.hdf,MOD09Q1.A2006073.h07v03.005.2008092234820.hdf,MOD09Q1.A2006081.h07v03.005.2008094112804.hdf,MOD09Q1.A2006089.h07v03.005.2008097163119.hdf,MOD09Q1.A2006097.h07v03.005.2008104024251.hdf,MOD09Q1.A2006105.h07v03.005.2008109184327.hdf,MOD09Q1.A2006113.h07v03.005.2008112065622.hdf,MOD09Q1.A2006121.h07v03.005.2008114114856.hdf,MOD09Q1.A2006129.h07v03.005.2008116161824.hdf,MOD09Q1.A2006137.h07v03.005.2008321005918.hdf,MOD09Q1.A2006145.h07v03.005.2008122023004.hdf,MOD09Q1.A2006153.h07v03.005.2008123012242.hdf,MOD09Q1.A2006161.h07v03.005.2008234022032.hdf,MOD09Q1.A2006169.h07v03.005.2008234074811.hdf,MOD09Q1.A2006177.h07v03.005.2008132204725.hdf,MOD09Q1.A2006185.h07v03.005.2008135162032.hdf,MOD09Q1.A2006193.h07v03.005.2008137192236.hdf,MOD09Q1.A2006201.h07v03.005.2008141212813.hdf,MOD09Q1.A2006209.h07v03.005.2008103130546.hdf,MOD09Q1.A2006217.h07v03.005.2008104140630.hdf,MOD09Q1.A2006225.h07v03.005.2008105043844.hdf,MOD09Q1.A2006233.h07v03.005.2008105044121.hdf,MOD09Q1.A2006241.h07v03.005.2008106172058.hdf,MOD09Q1.A2006249.h07v03.005.2008107093939.hdf,MOD09Q1.A2006257.h07v03.005.2008108021339.hdf,MOD09Q1.A2006265.h07v03.005.2008111101737.hdf,MOD09Q1.A2006273.h07v03.005.2008112052549.hdf,MOD09Q1.A2006281.h07v03.005.2008273123529.hdf,MOD09Q1.A2006289.h07v03.005.2008274210225.hdf,MOD09Q1.A2006297.h07v03.005.2008118080101.hdf,MOD09Q1.A2006305.h07v03.005.2008120230812.hdf,MOD09Q1.A2006313.h07v03.005.2008241150850.hdf,MOD09Q1.A2006321.h07v03.005.2008244194430.hdf,MOD09Q1.A2006329.h07v03.005.2008126194831.hdf,MOD09Q1.A2006337.h07v03.005.2008245113942.hdf,MOD09Q1.A2006345.h07v03.005.2008130125501.hdf,MOD09Q1.A2006353.h07v03.005.2008132125251.hdf,MOD09Q1.A2006361.h07v03.005.2008134123022.hdf,MOD09Q1.A2007001.h07v03.005.2007076052452.hdf,MOD09Q1.A2007009.h07v03.005.2007136101828.hdf,MOD09Q1.A2007017.h07v03.005.2007093100811.hdf,MOD09Q1.A2007025.h07v03.005.2007095141813.hdf,MOD09Q1.A2007033.h07v03.005.2007098192405.hdf,MOD09Q1.A2007041.h07v03.005.2007101004317.hdf,MOD09Q1.A2007049.h07v03.005.2007085092438.hdf,MOD09Q1.A2007057.h07v03.005.2007087160003.hdf,MOD09Q1.A2007065.h07v03.005.2007088114416.hdf,MOD09Q1.A2007073.h07v03.005.2007099084828.hdf,MOD09Q1.A2007081.h07v03.005.2007096142248.hdf,MOD09Q1.A2007089.h07v03.005.2007106224915.hdf,MOD09Q1.A2007097.h07v03.005.2007109005711.hdf,MOD09Q1.A2007105.h07v03.005.2007125012353.hdf,MOD09Q1.A2007113.h07v03.005.2007128052651.hdf,MOD09Q1.A2007121.h07v03.005.2007134225638.hdf,MOD09Q1.A2007129.h07v03.005.2007141162617.hdf,MOD09Q1.A2007137.h07v03.005.2007153014546.hdf,MOD09Q1.A2007145.h07v03.005.2007157171309.hdf,MOD09Q1.A2007153.h07v03.005.2007178163256.hdf,MOD09Q1.A2007161.h07v03.005.2007175194918.hdf,MOD09Q1.A2007169.h07v03.005.2007187125224.hdf,MOD09Q1.A2007177.h07v03.005.2007196172558.hdf,MOD09Q1.A2007185.h07v03.005.2007199131411.hdf,MOD09Q1.A2007193.h07v03.005.2007207123400.hdf,MOD09Q1.A2007201.h07v03.005.2007213034004.hdf,MOD09Q1.A2007209.h07v03.005.2007225042942.hdf,MOD09Q1.A2007217.h07v03.005.2007230064153.hdf,MOD09Q1.A2007225.h07v03.005.2007235133407.hdf,MOD09Q1.A2007233.h07v03.005.2007243114300.hdf,MOD09Q1.A2007241.h07v03.005.2007251112304.hdf,MOD09Q1.A2007249.h07v03.005.2007261034748.hdf,MOD09Q1.A2007257.h07v03.005.2007269054105.hdf,MOD09Q1.A2007265.h07v03.005.2007277010940.hdf,MOD09Q1.A2007273.h07v03.005.2008249094346.hdf,MOD09Q1.A2007281.h07v03.005.2007307120444.hdf,MOD09Q1.A2007289.h07v03.005.2007308194148.hdf,MOD09Q1.A2007297.h07v03.005.2007310022005.hdf,MOD09Q1.A2007305.h07v03.005.2007333221138.hdf,MOD09Q1.A2007313.h07v03.005.2007335153053.hdf,MOD09Q1.A2007321.h07v03.005.2007336102951.hdf,MOD09Q1.A2007329.h07v03.005.2007344152348.hdf,MOD09Q1.A2007337.h07v03.005.2007347030421.hdf,MOD09Q1.A2007345.h07v03.005.2007359183333.hdf,MOD09Q1.A2007353.h07v03.005.2007363073726.hdf,MOD09Q1.A2007361.h07v03.005.2008006173517.hdf + ---> Metadata_5 = LOCALGRANULEID=MOD09Q1G_EVI.A2006233.h07v03.005.2008338190308.hdf + ---> Metadata_6 = LONGNAME=MODIS/Terra Gap-Filled, Smoothed EVI 8-Day L4 500m SIN Grid + ---> Metadata_7 = long_name=MODIS EVI Computed from MOD09A1 + ---> Metadata_8 = NORTHBOUNDINGCOORDINATE=56.258333 + ---> Metadata_9 = PGEVERSION=5.0.6 + ---> NoDataValue[0] = 32767 + ---> ProjectionRef = PROJCS["unnamed", + GEOGCS["Unknown datum based upon the custom spheroid", + DATUM["Not specified (based on custom spheroid)", + SPHEROID["Custom spheroid",6371007.181,0]], + PRIMEM["Greenwich",0], + UNIT["degree",0.0174532925199433, + AUTHORITY["EPSG","9122"]]], + PROJECTION["Sinusoidal"], + PARAMETER["longitude_of_center",0], + PARAMETER["false_easting",0], + PARAMETER["false_northing",0], + UNIT["Meter",1], + AXIS["Easting",EAST], + AXIS["Northing",NORTH]] + ---> ResolutionFactor = 0 + ---> SubDatasetIndex = 0 + ---> TileHintX = 4800 + ---> TileHintY = 4800 + ---> UpperLeftCorner[0] = -12231455.716333 + ---> UpperLeftCorner[1] = 6671703.118 + ---> UpperRightCorner[0] = -11119505.196667 + ---> UpperRightCorner[1] = 6671703.118 diff --git a/Data/Baseline/OTB/Files/ioTvMultiDatasetReading2.2.txt b/Data/Baseline/OTB/Files/ioTvMultiDatasetReading2.2.txt new file mode 100644 index 0000000000000000000000000000000000000000..4309773d39d559b0229bd01510ba6100813ae38a --- /dev/null +++ b/Data/Baseline/OTB/Files/ioTvMultiDatasetReading2.2.txt @@ -0,0 +1,122 @@ +VectorImage (0x2055dc0) + RTTI typeinfo: otb::VectorImage + Reference Count: 3 + Modified Time: 90 + Debug: Off + Object Name: + Observers: + none + Source: (0x204f720) + Source output name: Primary + Release Data: Off + Data Released: False + Global Release Data: Off + PipelineMTime: 20 + UpdateMTime: 0 + RealTimeStamp: 0 seconds + LargestPossibleRegion: + Dimension: 2 + Index: [0, 0] + Size: [4800, 4800] + BufferedRegion: + Dimension: 2 + Index: [0, 0] + Size: [0, 0] + RequestedRegion: + Dimension: 2 + Index: [0, 0] + Size: [0, 0] + Spacing: [231.65635826375, 231.656358263958] + Origin: [-12231339.8881539, 6671587.28982087] + Direction: +1 0 +0 -1 + + IndexToPointMatrix: +231.65635826375 0 +0 -231.656358263958 + + PointToIndexMatrix: +0.00431673884323719 0 +0 -0.00431673884323331 + + Inverse Direction: +1 0 +0 -1 + + VectorLength: 1 + PixelContainer: + ImportImageContainer (0x204f650) + RTTI typeinfo: itk::ImportImageContainer + Reference Count: 1 + Modified Time: 11 + Debug: Off + Object Name: + Observers: + none + Pointer: 0 + Container manages memory: true + Size: 0 + Capacity: 0 + ---> DataType = 0 + ---> DriverLongName = HDF4 Dataset + ---> DriverShortName = HDF4Image + ---> GeoTransform[0] = -12231455.716333 + ---> GeoTransform[1] = 231.65635826375 + ---> GeoTransform[2] = 0 + ---> GeoTransform[3] = 6671703.118 + ---> GeoTransform[4] = 0 + ---> GeoTransform[5] = -231.656358263958 + ---> LowerLeftCorner[0] = -12231455.716333 + ---> LowerLeftCorner[1] = 5559752.598333 + ---> LowerRightCorner[0] = -11119505.196667 + ---> LowerRightCorner[1] = 5559752.598333 + ---> Metadata_0 = DAYNIGHTFLAG=D + ---> Metadata_1 = description= +1 = high quality MODIS EVI +2 = smoothed EVI +3 = fill value from MODIS + ---> Metadata_10 = PGEVERSION=5.0.6 + ---> Metadata_11 = PROCESSINGCENTER=MODAPS + ---> Metadata_12 = PROCESSINGENVIRONMENT=Linux minion5336 2.6.22.19-server-2mdv #1 SMP Mon May 5 21:13:00 EDT 2008 i686 IntelR XeonR CPU E5430 @ 2.66GHz GNU/Linux + ---> Metadata_13 = PRODUCTIONDATETIME=2008-12-03 19:03:08 + ---> Metadata_14 = RANGEBEGINNINGDATE=2006-08-21 + ---> Metadata_15 = RANGEBEGINNINGTIME=00:00:00 + ---> Metadata_16 = RANGEENDINGDATE=2006-08-28 + ---> Metadata_17 = RANGEENDINGTIME=23:59:59 + ---> Metadata_18 = SHORTNAME=MOD09Q1G_EVI + ---> Metadata_19 = SOUTHBOUNDINGCOORDINATE=50.000000 + ---> Metadata_2 = EASTBOUNDINGCOORDINATE=-155.559418 + ---> Metadata_20 = TileID=51007003 + ---> Metadata_21 = VERSIONID=5 + ---> Metadata_22 = VERTICALTILENUMBER=03 + ---> Metadata_23 = WESTBOUNDINGCOORDINATE=-180.000000 + ---> Metadata_3 = HDFEOSVersion=HDFEOS_V2.9 + ---> Metadata_4 = HORIZONTALTILENUMBER=07 + ---> Metadata_5 = INPUTPOINTER=MOD09Q1.A2005001.h07v03.005.2007352095846.hdf,MOD09Q1.A2005009.h07v03.005.2007356042935.hdf,MOD09Q1.A2005017.h07v03.005.2007358144925.hdf,MOD09Q1.A2005025.h07v03.005.2007362053649.hdf,MOD09Q1.A2005033.h07v03.005.2007364181843.hdf,MOD09Q1.A2005041.h07v03.005.2008001225607.hdf,MOD09Q1.A2005049.h07v03.005.2008199094111.hdf,MOD09Q1.A2005057.h07v03.005.2008200060041.hdf,MOD09Q1.A2005065.h07v03.005.2008011022036.hdf,MOD09Q1.A2005073.h07v03.005.2008011212125.hdf,MOD09Q1.A2005081.h07v03.005.2008013054005.hdf,MOD09Q1.A2005089.h07v03.005.2008013133454.hdf,MOD09Q1.A2005097.h07v03.005.2008015013356.hdf,MOD09Q1.A2005105.h07v03.005.2008018163918.hdf,MOD09Q1.A2005113.h07v03.005.2008020052027.hdf,MOD09Q1.A2005121.h07v03.005.2008022182402.hdf,MOD09Q1.A2005129.h07v03.005.2008024223714.hdf,MOD09Q1.A2005137.h07v03.005.2008032153227.hdf,MOD09Q1.A2005145.h07v03.005.2008034052158.hdf,MOD09Q1.A2005153.h07v03.005.2008233033009.hdf,MOD09Q1.A2005161.h07v03.005.2008036233027.hdf,MOD09Q1.A2005169.h07v03.005.2008039165041.hdf,MOD09Q1.A2005177.h07v03.005.2008205013722.hdf,MOD09Q1.A2005185.h07v03.005.2008044090710.hdf,MOD09Q1.A2005193.h07v03.005.2008047145217.hdf,MOD09Q1.A2005201.h07v03.005.2008210120745.hdf,MOD09Q1.A2005209.h07v03.005.2008053125802.hdf,MOD09Q1.A2005217.h07v03.005.2008055040352.hdf,MOD09Q1.A2005225.h07v03.005.2008058000740.hdf,MOD09Q1.A2005233.h07v03.005.2008213101122.hdf,MOD09Q1.A2005241.h07v03.005.2008064002202.hdf,MOD09Q1.A2005249.h07v03.005.2008066033650.hdf,MOD09Q1.A2005257.h07v03.005.2008217124311.hdf,MOD09Q1.A2005265.h07v03.005.2008219075840.hdf,MOD09Q1.A2005273.h07v03.005.2008071102803.hdf,MOD09Q1.A2005281.h07v03.005.2008073133931.hdf,MOD09Q1.A2005289.h07v03.005.2008075034036.hdf,MOD09Q1.A2005297.h07v03.005.2008076174351.hdf,MOD09Q1.A2005305.h07v03.005.2008080141752.hdf,MOD09Q1.A2005313.h07v03.005.2008083221201.hdf,MOD09Q1.A2005321.h07v03.005.2008262094029.hdf,MOD09Q1.A2005329.h07v03.005.2008086084311.hdf,MOD09Q1.A2005337.h07v03.005.2008220163223.hdf,MOD09Q1.A2005345.h07v03.005.2008221215931.hdf,MOD09Q1.A2005353.h07v03.005.2008092055621.hdf,MOD09Q1.A2005361.h07v03.005.2008095024133.hdf,MOD09Q1.A2006001.h07v03.005.2008070193427.hdf,MOD09Q1.A2006009.h07v03.005.2008072135612.hdf,MOD09Q1.A2006017.h07v03.005.2008276212353.hdf,MOD09Q1.A2006025.h07v03.005.2008076154117.hdf,MOD09Q1.A2006033.h07v03.005.2008078191028.hdf,MOD09Q1.A2006041.h07v03.005.2008080125013.hdf,MOD09Q1.A2006049.h07v03.005.2008081182250.hdf,MOD09Q1.A2006057.h07v03.005.2008085025553.hdf,MOD09Q1.A2006065.h07v03.005.2008087112458.hdf,MOD09Q1.A2006073.h07v03.005.2008092234820.hdf,MOD09Q1.A2006081.h07v03.005.2008094112804.hdf,MOD09Q1.A2006089.h07v03.005.2008097163119.hdf,MOD09Q1.A2006097.h07v03.005.2008104024251.hdf,MOD09Q1.A2006105.h07v03.005.2008109184327.hdf,MOD09Q1.A2006113.h07v03.005.2008112065622.hdf,MOD09Q1.A2006121.h07v03.005.2008114114856.hdf,MOD09Q1.A2006129.h07v03.005.2008116161824.hdf,MOD09Q1.A2006137.h07v03.005.2008321005918.hdf,MOD09Q1.A2006145.h07v03.005.2008122023004.hdf,MOD09Q1.A2006153.h07v03.005.2008123012242.hdf,MOD09Q1.A2006161.h07v03.005.2008234022032.hdf,MOD09Q1.A2006169.h07v03.005.2008234074811.hdf,MOD09Q1.A2006177.h07v03.005.2008132204725.hdf,MOD09Q1.A2006185.h07v03.005.2008135162032.hdf,MOD09Q1.A2006193.h07v03.005.2008137192236.hdf,MOD09Q1.A2006201.h07v03.005.2008141212813.hdf,MOD09Q1.A2006209.h07v03.005.2008103130546.hdf,MOD09Q1.A2006217.h07v03.005.2008104140630.hdf,MOD09Q1.A2006225.h07v03.005.2008105043844.hdf,MOD09Q1.A2006233.h07v03.005.2008105044121.hdf,MOD09Q1.A2006241.h07v03.005.2008106172058.hdf,MOD09Q1.A2006249.h07v03.005.2008107093939.hdf,MOD09Q1.A2006257.h07v03.005.2008108021339.hdf,MOD09Q1.A2006265.h07v03.005.2008111101737.hdf,MOD09Q1.A2006273.h07v03.005.2008112052549.hdf,MOD09Q1.A2006281.h07v03.005.2008273123529.hdf,MOD09Q1.A2006289.h07v03.005.2008274210225.hdf,MOD09Q1.A2006297.h07v03.005.2008118080101.hdf,MOD09Q1.A2006305.h07v03.005.2008120230812.hdf,MOD09Q1.A2006313.h07v03.005.2008241150850.hdf,MOD09Q1.A2006321.h07v03.005.2008244194430.hdf,MOD09Q1.A2006329.h07v03.005.2008126194831.hdf,MOD09Q1.A2006337.h07v03.005.2008245113942.hdf,MOD09Q1.A2006345.h07v03.005.2008130125501.hdf,MOD09Q1.A2006353.h07v03.005.2008132125251.hdf,MOD09Q1.A2006361.h07v03.005.2008134123022.hdf,MOD09Q1.A2007001.h07v03.005.2007076052452.hdf,MOD09Q1.A2007009.h07v03.005.2007136101828.hdf,MOD09Q1.A2007017.h07v03.005.2007093100811.hdf,MOD09Q1.A2007025.h07v03.005.2007095141813.hdf,MOD09Q1.A2007033.h07v03.005.2007098192405.hdf,MOD09Q1.A2007041.h07v03.005.2007101004317.hdf,MOD09Q1.A2007049.h07v03.005.2007085092438.hdf,MOD09Q1.A2007057.h07v03.005.2007087160003.hdf,MOD09Q1.A2007065.h07v03.005.2007088114416.hdf,MOD09Q1.A2007073.h07v03.005.2007099084828.hdf,MOD09Q1.A2007081.h07v03.005.2007096142248.hdf,MOD09Q1.A2007089.h07v03.005.2007106224915.hdf,MOD09Q1.A2007097.h07v03.005.2007109005711.hdf,MOD09Q1.A2007105.h07v03.005.2007125012353.hdf,MOD09Q1.A2007113.h07v03.005.2007128052651.hdf,MOD09Q1.A2007121.h07v03.005.2007134225638.hdf,MOD09Q1.A2007129.h07v03.005.2007141162617.hdf,MOD09Q1.A2007137.h07v03.005.2007153014546.hdf,MOD09Q1.A2007145.h07v03.005.2007157171309.hdf,MOD09Q1.A2007153.h07v03.005.2007178163256.hdf,MOD09Q1.A2007161.h07v03.005.2007175194918.hdf,MOD09Q1.A2007169.h07v03.005.2007187125224.hdf,MOD09Q1.A2007177.h07v03.005.2007196172558.hdf,MOD09Q1.A2007185.h07v03.005.2007199131411.hdf,MOD09Q1.A2007193.h07v03.005.2007207123400.hdf,MOD09Q1.A2007201.h07v03.005.2007213034004.hdf,MOD09Q1.A2007209.h07v03.005.2007225042942.hdf,MOD09Q1.A2007217.h07v03.005.2007230064153.hdf,MOD09Q1.A2007225.h07v03.005.2007235133407.hdf,MOD09Q1.A2007233.h07v03.005.2007243114300.hdf,MOD09Q1.A2007241.h07v03.005.2007251112304.hdf,MOD09Q1.A2007249.h07v03.005.2007261034748.hdf,MOD09Q1.A2007257.h07v03.005.2007269054105.hdf,MOD09Q1.A2007265.h07v03.005.2007277010940.hdf,MOD09Q1.A2007273.h07v03.005.2008249094346.hdf,MOD09Q1.A2007281.h07v03.005.2007307120444.hdf,MOD09Q1.A2007289.h07v03.005.2007308194148.hdf,MOD09Q1.A2007297.h07v03.005.2007310022005.hdf,MOD09Q1.A2007305.h07v03.005.2007333221138.hdf,MOD09Q1.A2007313.h07v03.005.2007335153053.hdf,MOD09Q1.A2007321.h07v03.005.2007336102951.hdf,MOD09Q1.A2007329.h07v03.005.2007344152348.hdf,MOD09Q1.A2007337.h07v03.005.2007347030421.hdf,MOD09Q1.A2007345.h07v03.005.2007359183333.hdf,MOD09Q1.A2007353.h07v03.005.2007363073726.hdf,MOD09Q1.A2007361.h07v03.005.2008006173517.hdf + ---> Metadata_6 = LOCALGRANULEID=MOD09Q1G_EVI.A2006233.h07v03.005.2008338190308.hdf + ---> Metadata_7 = LONGNAME=MODIS/Terra Gap-Filled, Smoothed EVI 8-Day L4 500m SIN Grid + ---> Metadata_8 = long_name=Composed EVI Quality + ---> Metadata_9 = NORTHBOUNDINGCOORDINATE=56.258333 + ---> ProjectionRef = PROJCS["unnamed", + GEOGCS["Unknown datum based upon the custom spheroid", + DATUM["Not specified (based on custom spheroid)", + SPHEROID["Custom spheroid",6371007.181,0]], + PRIMEM["Greenwich",0], + UNIT["degree",0.0174532925199433, + AUTHORITY["EPSG","9122"]]], + PROJECTION["Sinusoidal"], + PARAMETER["longitude_of_center",0], + PARAMETER["false_easting",0], + PARAMETER["false_northing",0], + UNIT["Meter",1], + AXIS["Easting",EAST], + AXIS["Northing",NORTH]] + ---> ResolutionFactor = 0 + ---> SubDatasetIndex = 5 + ---> TileHintX = 4800 + ---> TileHintY = 4800 + ---> UpperLeftCorner[0] = -12231455.716333 + ---> UpperLeftCorner[1] = 6671703.118 + ---> UpperRightCorner[0] = -11119505.196667 + ---> UpperRightCorner[1] = 6671703.118 diff --git a/Data/Baseline/OTB/Images/apTvUtSmoothingTestAnisotropic.tif b/Data/Baseline/OTB/Images/apTvUtSmoothingTestAnisotropic.tif new file mode 100644 index 0000000000000000000000000000000000000000..5336d199981b5d04949f5975d7db85891472cc02 --- /dev/null +++ b/Data/Baseline/OTB/Images/apTvUtSmoothingTestAnisotropic.tif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bdd0ce0f98ec479767e9e4cbb8f118753963f9a91c689870c3f02758de94d15e +size 3422183 diff --git a/Data/Baseline/OTB/Images/apTvUtSmoothingTestGaussian.tif b/Data/Baseline/OTB/Images/apTvUtSmoothingTestGaussian.tif new file mode 100644 index 0000000000000000000000000000000000000000..539c8486c84743e13cdaccf1c654fd11e3191975 --- /dev/null +++ b/Data/Baseline/OTB/Images/apTvUtSmoothingTestGaussian.tif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5a9e56c55f2cb4f16ad31b762f1a38283c664d5570671fdf5f8a905f03a53a13 +size 3308861 diff --git a/Data/Input/Classification/VectorData_QB1_utm31n.sqlite b/Data/Input/Classification/VectorData_QB1_utm31n.sqlite index 11375dce47cd59d4aaca11e853fa2d37ac37751d..1747adba172ac17dc0f367f0fd5f4a6648576127 100644 --- a/Data/Input/Classification/VectorData_QB1_utm31n.sqlite +++ b/Data/Input/Classification/VectorData_QB1_utm31n.sqlite @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8dd0395d9f1c8a85aedbdbc2838432064ad142865b6bd185aa2d1115edb9ec5a -size 24576 +oid sha256:c736aa0571fbcf4ecb21cc380dbe9211709abd4b73ca884af74428b7d7d20ae5 +size 28672 diff --git a/Data/Input/apTvUtSmoothingTest_OutXML.xml b/Data/Input/apTvUtSmoothingTest_OutXML.xml deleted file mode 100644 index 2f95025e38bfb54bf6b8d5d9accf3e91b02c62f4..0000000000000000000000000000000000000000 --- a/Data/Input/apTvUtSmoothingTest_OutXML.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - 3.18 - 18-05-2013 - Linux - - Smoothing - Apply a smoothing filter to an image - - Smoothing - This application applies smoothing filter to an image. Either gaussian, mean, or anisotropic diffusion are available. - OTB-Team - None - - - Image Filtering - - - - in - InputImage - Input Image - /home/rashad/repos/orfeo/OTB-Data/Input/poupees.tif - - - out - OutputImage - Output Image - /home/rashad/repos/orfeo/build/OTB_/test-build/Testing/Temporary/apTvUtSmoothingTest_OutXML.tif - - - type - Choice - Smoothing Type - mean - - - diff --git a/Modules/Adapters/OSSIMAdapters/src/otbImageKeywordlist.cxx b/Modules/Adapters/OSSIMAdapters/src/otbImageKeywordlist.cxx index 3d185c4b39931cf4eaa84a9ff3774d0e28425ec2..03715f28f64fc794e388558622138644868fd4ac 100644 --- a/Modules/Adapters/OSSIMAdapters/src/otbImageKeywordlist.cxx +++ b/Modules/Adapters/OSSIMAdapters/src/otbImageKeywordlist.cxx @@ -22,6 +22,7 @@ #include "otbConfigurationManager.h" #include +#include #include "otbMacro.h" @@ -59,6 +60,7 @@ #include "otbSensorModelAdapter.h" #include #include +#include namespace otb { @@ -344,6 +346,17 @@ ImageKeywordlist ReadGeometryFromRPCTag(const std::string& filename) ossimKeywordlist geom_kwl; ImageKeywordlist otb_kwl; + // Don't call GDALIdentifyDriver on a hdr file because this makes the ENVI driver throw an error: + // "ERROR 1: The selected file is an ENVI header file, but to open ENVI datasets, the data file + // should be selected instead of the .hdr file. Please try again selecting the data file corresponding + // to the header file" + // No driver can open hdr file anyway. + std::string extension = itksys::SystemTools::GetFilenameLastExtension(filename); + if (boost::iequals(extension, ".hdr")) + { + return otb_kwl; + } + // try to use GeoTiff RPC tag if present. // Warning : RPC in subdatasets are not supported GDALDriverH identifyDriverH = GDALIdentifyDriver(filename.c_str(), nullptr); diff --git a/Modules/Applications/AppClassification/include/otbTrainImagesBase.hxx b/Modules/Applications/AppClassification/include/otbTrainImagesBase.hxx index fcde968811ebb11c95883e912b137380899cfa7e..85e28577822b564f49dd6d795b4057c1b8153b59 100644 --- a/Modules/Applications/AppClassification/include/otbTrainImagesBase.hxx +++ b/Modules/Applications/AppClassification/include/otbTrainImagesBase.hxx @@ -148,7 +148,6 @@ void TrainImagesBase::ShareClassificationParams() void TrainImagesBase::ConnectClassificationParams() { - Connect("training.cfield", "polystat.field"); Connect("select.rand", "training.rand"); } @@ -264,6 +263,12 @@ void TrainImagesBase::TrainModel(FloatVectorImageListType* imageList, const std: selectedNames.push_back("value_" + oss.str()); } GetInternalApplication("training")->SetParameterStringList("feat", selectedNames); + + // cfield is not directly connected to sample.vfn (ListView parameter) because the associated vector + // data is not the same (the fields are not the same). + GetInternalApplication("training")->SetParameterStringList("cfield", + {GetChoiceNames("sample.vfn")[GetSelectedItems("sample.vfn").front()]}); + ExecuteInternal("training"); } diff --git a/Modules/Applications/AppFiltering/app/otbFastNLMeans.cxx b/Modules/Applications/AppFiltering/app/otbFastNLMeans.cxx index 3ed27ed028bfe43d0e1c27e626c9ab6d155125a3..c6e12f241bdadc42a6f1852289d111f78c37a4cb 100644 --- a/Modules/Applications/AppFiltering/app/otbFastNLMeans.cxx +++ b/Modules/Applications/AppFiltering/app/otbFastNLMeans.cxx @@ -59,7 +59,7 @@ private: "This filter relies on integral images. Overflow may happen though the risk is limited " " by OTB mechanism which process data by chunks."); SetDocAuthors("OTB-Team"); - SetDocSeeAlso(" "); + SetDocSeeAlso("Smoothing"); AddDocTag(Tags::Filter); // Parameter declarations @@ -110,25 +110,25 @@ private: void DoExecute() override { - // Get the input image - ImageType::Pointer imIn = this->GetParameterFloatImage("in"); - float sigma = this->GetParameterFloat("sig"); - float cutoffDistance = this->GetParameterFloat("thresh"); - int halfPatchSize = this->GetParameterInt("patchradius"); - int halfSearchSize = this->GetParameterInt("searchradius"); - NLMeansFilterType::Pointer nlMeansFilter = NLMeansFilterType::New(); + // Get the input parameters + const auto imIn = this->GetParameterFloatImage("in"); + const auto sigma = this->GetParameterFloat("sig"); + const auto cutoffDistance = this->GetParameterFloat("thresh"); + const auto halfPatchSize = this->GetParameterInt("patchradius"); + const auto halfSearchSize = this->GetParameterInt("searchradius"); + + auto nlMeansFilter = NLMeansFilterType::New(); + nlMeansFilter->SetInput(imIn); nlMeansFilter->SetSigma(sigma); nlMeansFilter->SetHalfWindowSize(halfPatchSize); nlMeansFilter->SetHalfSearchSize(halfSearchSize); nlMeansFilter->SetCutOffDistance(cutoffDistance); - m_FilterRef = nlMeansFilter; SetParameterOutputImage("out", nlMeansFilter->GetOutput()); RegisterPipeline(); } - itk::LightObject::Pointer m_FilterRef; }; // end class } // namespace Wrapper diff --git a/Modules/Applications/AppFiltering/app/otbSmoothing.cxx b/Modules/Applications/AppFiltering/app/otbSmoothing.cxx index f465172b66a2ad441e7c12888d917409785a1d89..4803bc7e934cfe09e825ea39c82f1d571284b718 100644 --- a/Modules/Applications/AppFiltering/app/otbSmoothing.cxx +++ b/Modules/Applications/AppFiltering/app/otbSmoothing.cxx @@ -62,11 +62,21 @@ private: SetDocLongDescription( "This application applies a smoothing filter to an " - "image. Three methods can be used: a gaussian filter , a mean filter " - ", or an anisotropic diffusion using the Perona-Malik algorithm."); + "image. Three methods can be used: a mean filter, a gaussian filter based on [1]" + ", or an anisotropic diffusion using the Perona-Malik algorithm [2]."); SetDocLimitations("None"); SetDocAuthors("OTB-Team"); - SetDocSeeAlso(" "); + SetDocSeeAlso("FastNLMeans \n" + "[1] Tony Lindeberg Discrete " + "Scale-Space Theory and the Scale-Space Primal Sketch. Dissertation. Royal " + "Institute of Technology, Stockholm, Sweden. May 1991 \n" + "[2] Pietro Perona and Jitendra Malik, " + "Scale-space and edge detection using anisotropic diffusion, " + "IEEE Transactions on Pattern Analysis Machine Intelligence, vol. 12, pp. 629-639, 1990. \n" + "itk::MeanImageFilter (mean mode)\n" + "itk::DiscreteGaussianImageFilter (gaussian mode)\n" + "itk::GradientAnisotropicDiffusionImageFilter (anidif mode)." + ); AddDocTag(Tags::Filter); @@ -86,13 +96,21 @@ private: AddChoice("type.gaussian", "Gaussian"); - AddParameter(ParameterType_Float, "type.gaussian.radius", "Radius"); - SetParameterDescription("type.gaussian.radius", "Standard deviation of the gaussian kernel used to filter the image"); - SetDefaultParameterFloat("type.gaussian.radius", 2.0); - // TODO rename this parameter + AddParameter(ParameterType_Float, "type.gaussian.stdev", "Standard deviation"); + SetParameterDescription("type.gaussian.stdev", "Standard deviation of the gaussian kernel used to filter the image"); + SetDefaultParameterFloat("type.gaussian.stdev", 2.0); - AddChoice("type.anidif", "Anisotropic Diffusion"); + AddParameter(ParameterType_Float, "type.gaussian.maxerror", "Maximum error"); + SetParameterDescription("type.gaussian.maxerror", "The algorithm will size the discrete kernel so that the error " + "resulting from truncation of the kernel is no greater than maxerror."); + SetDefaultParameterFloat("type.gaussian.maxerror", 0.01); + + AddParameter(ParameterType_Int, "type.gaussian.maxwidth", "Maximum kernel width"); + SetParameterDescription("type.gaussian.maxwidth", "Set the kernel to be no wider than maxwidth pixels, " + "even if type.gaussian.maxerror demands it."); + SetDefaultParameterInt("type.gaussian.maxwidth", 32); + AddChoice("type.anidif", "Anisotropic Diffusion"); AddParameter(ParameterType_Float, "type.anidif.timestep", "Time Step"); SetParameterDescription("type.anidif.timestep", "Time step that will be used to discretize the diffusion equation"); @@ -139,79 +157,79 @@ private: void DoExecute() override { - GetLogger()->Debug("Entering DoExecute\n"); - - - FloatVectorImageType::Pointer inImage = GetParameterImage("in"); + const auto inImage = GetParameterImage("in"); switch (GetParameterInt("type")) { case Smoothing_Mean: { - GetLogger()->Debug("Using mean"); + otbAppLogINFO("Using mean smoothing"); typedef itk::MeanImageFilter MeanFilterType; typedef otb::PerBandVectorImageFilter PerBandMeanFilterType; - PerBandMeanFilterType::Pointer perBand = PerBandMeanFilterType::New(); + auto perBand = PerBandMeanFilterType::New(); perBand->SetInput(inImage); MeanFilterType::InputSizeType radius; radius.Fill(GetParameterInt("type.mean.radius")); perBand->GetFilter()->SetRadius(radius); - perBand->UpdateOutputInformation(); - m_FilterRef = perBand; + SetParameterOutputImage("out", perBand->GetOutput()); + + RegisterPipeline(); } break; case Smoothing_Gaussian: { - GetLogger()->Debug("Using gaussian"); + otbAppLogINFO("Using gaussian smoothing"); typedef itk::DiscreteGaussianImageFilter DiscreteGaussianFilterType; typedef otb::PerBandVectorImageFilter PerBandDiscreteGaussianFilterType; - PerBandDiscreteGaussianFilterType::Pointer perBand = PerBandDiscreteGaussianFilterType::New(); + auto perBand = PerBandDiscreteGaussianFilterType::New(); perBand->SetInput(inImage); - double radius = GetParameterFloat("type.gaussian.radius"); - double variance = radius * radius; + const auto stdev = GetParameterFloat("type.gaussian.stdev"); + const auto variance = stdev * stdev; + perBand->GetFilter()->SetVariance(variance); perBand->GetFilter()->SetUseImageSpacing(false); - perBand->UpdateOutputInformation(); - m_FilterRef = perBand; + perBand->GetFilter()->SetMaximumError(GetParameterFloat("type.gaussian.maxerror")); + perBand->GetFilter()->SetMaximumKernelWidth(GetParameterInt("type.gaussian.maxwidth")); + SetParameterOutputImage("out", perBand->GetOutput()); + + RegisterPipeline(); } break; case Smoothing_Anisotropic: { - GetLogger()->Debug("Using anisotropic diffusion"); + otbAppLogINFO("Using anisotropic diffusion smoothing"); typedef itk::GradientAnisotropicDiffusionImageFilter GradientAnisotropicDiffusionFilterType; typedef otb::PerBandVectorImageFilter PerBandGradientAnisotropicDiffusionFilterType; - PerBandGradientAnisotropicDiffusionFilterType::Pointer perBand = PerBandGradientAnisotropicDiffusionFilterType::New(); + auto perBand = PerBandGradientAnisotropicDiffusionFilterType::New(); perBand->SetInput(inImage); - const int aniDifNbIter = GetParameterInt("type.anidif.nbiter"); + const auto aniDifNbIter = GetParameterInt("type.anidif.nbiter"); perBand->GetFilter()->SetNumberOfIterations(static_cast(aniDifNbIter)); - const float aniDifTimeStep = GetParameterFloat("type.anidif.timestep"); + const auto aniDifTimeStep = GetParameterFloat("type.anidif.timestep"); perBand->GetFilter()->SetTimeStep(static_cast(aniDifTimeStep)); perBand->GetFilter()->SetConductanceParameter(GetParameterFloat("type.anidif.conductance")); perBand->GetFilter()->SetUseImageSpacing(false); - perBand->UpdateOutputInformation(); - m_FilterRef = perBand; SetParameterOutputImage("out", perBand->GetOutput()); + + RegisterPipeline(); } break; } } - - itk::LightObject::Pointer m_FilterRef; }; } } diff --git a/Modules/Applications/AppFiltering/test/CMakeLists.txt b/Modules/Applications/AppFiltering/test/CMakeLists.txt index 84ce8527671b5e9ecf1540dd0d80216297cfa707..73fad582ae6d2870150d37b95da902c6761882ed 100644 --- a/Modules/Applications/AppFiltering/test/CMakeLists.txt +++ b/Modules/Applications/AppFiltering/test/CMakeLists.txt @@ -20,9 +20,20 @@ otb_module_test() #----------- Smoothing TESTS ---------------- + +otb_test_application(NAME apTvUtSmoothingTest_OutXML + APP Smoothing + OPTIONS -in ${INPUTDATA}/poupees.tif + -out ${TEMP}/apTvUtSmoothingTest_OutXML.tif + -type mean + -outxml ${TEMP}/apTvUtSmoothingTest_OutXML.xml + VALID --compare-image ${NOTOL} + ${BASELINE}/apTvUtSmoothingTest.tif + ${TEMP}/apTvUtSmoothingTest_OutXML.tif) + otb_test_application(NAME apTvUtSmoothingTest_InXML APP Smoothing - OPTIONS -inxml ${INPUTDATA}/apTvUtSmoothingTest_OutXML.xml + OPTIONS -inxml ${TEMP}/apTvUtSmoothingTest_OutXML.xml -in ${INPUTDATA}/poupees.tif -out ${TEMP}/apTvUtSmoothingTest_InXML.tif -type mean @@ -30,24 +41,32 @@ otb_test_application(NAME apTvUtSmoothingTest_InXML ${BASELINE}/apTvUtSmoothingTest.tif ${TEMP}/apTvUtSmoothingTest_InXML.tif) -otb_test_application(NAME apTvUtSmoothingTest +set_tests_properties( apTvUtSmoothingTest_InXML + PROPERTIES DEPENDS apTvUtSmoothingTest_OutXML) + +otb_test_application(NAME apTvUtSmoothingTestGaussian APP Smoothing OPTIONS -in ${INPUTDATA}/poupees.tif - -out ${TEMP}/apTvUtSmoothingTest.tif - -type mean + -out ${TEMP}/apTvUtSmoothingTestGaussian.tif + -type gaussian + -type.gaussian.stdev 2.0 + -type.gaussian.maxerror 0.1 + -type.gaussian.maxwidth 64 VALID --compare-image ${NOTOL} - ${BASELINE}/apTvUtSmoothingTest.tif - ${TEMP}/apTvUtSmoothingTest.tif) + ${BASELINE}/apTvUtSmoothingTestGaussian.tif + ${TEMP}/apTvUtSmoothingTestGaussian.tif) -otb_test_application(NAME apTvUtSmoothingTest_OutXML +otb_test_application(NAME apTvUtSmoothingTestAnisotropic APP Smoothing OPTIONS -in ${INPUTDATA}/poupees.tif - -out ${TEMP}/apTvUtSmoothingTest_OutXML.tif - -type mean - -outxml ${TEMP}/apTvUtSmoothingTest_OutXML.xml - VALID --compare-image ${NOTOL} - ${BASELINE}/apTvUtSmoothingTest.tif - ${TEMP}/apTvUtSmoothingTest_OutXML.tif) + -out ${TEMP}/apTvUtSmoothingTestAnisotropic.tif + -type anidif + -type.anidif.timestep 0.125 + -type.anidif.nbiter 10 + -type.anidif.conductance 1. + VALID --compare-image ${EPSILON_6} + ${BASELINE}/apTvUtSmoothingTestAnisotropic.tif + ${TEMP}/apTvUtSmoothingTestAnisotropic.tif) #----------- Contrast TESTS ---------------- @@ -115,7 +134,3 @@ otb_test_application(NAME nlMeansTest_base ${BASELINE}/GomaAvant_NLMeans.tif ${TEMP}/GomaAvant_NLMeans.tif) - - - - diff --git a/Modules/Core/Functor/include/otbVariadicInputsImageFilter.h b/Modules/Core/Functor/include/otbVariadicInputsImageFilter.h index c6bcccb70a045ed7f946a0e8f7f203e8b6460dc3..4aef7ac7e53e17442402024645105eab62eda11f 100644 --- a/Modules/Core/Functor/include/otbVariadicInputsImageFilter.h +++ b/Modules/Core/Functor/include/otbVariadicInputsImageFilter.h @@ -109,7 +109,7 @@ public: #undef DefineLegacySetInputMacro - template + template const InputImageType* GetInput() { static_assert(NumberOfInputs > I, "Template value I is out of range."); @@ -143,9 +143,9 @@ protected: private: template - auto SetInputsImpl(Tuple& t, std::index_sequence) + void SetInputsImpl(Tuple& t, std::index_sequence) { - return std::initializer_list{(this->template SetInput(std::get(t)), 0)...}; + std::initializer_list{(this->template SetInput(std::get(t)), 0)...}; } template @@ -157,6 +157,6 @@ private: VariadicInputsImageFilter(const Self&) = delete; void operator=(const Self&) = delete; }; -} +} // namespace otb #endif diff --git a/Modules/Filtering/Mosaic/include/otbMosaicFunctors.h b/Modules/Filtering/Mosaic/include/otbMosaicFunctors.h index b1db3c5df46a19545087991721c1524bec971e78..8303ba0be13afc5de949552a16a6de7f8290df1e 100644 --- a/Modules/Filtering/Mosaic/include/otbMosaicFunctors.h +++ b/Modules/Filtering/Mosaic/include/otbMosaicFunctors.h @@ -23,6 +23,7 @@ #ifndef MODULES_REMOTE_MOSAIC_INCLUDE_OTBMOSAICFUNCTORS_H_ #define MODULES_REMOTE_MOSAIC_INCLUDE_OTBMOSAICFUNCTORS_H_ +#include #include "vnl/vnl_matrix.h" #include "vcl_compiler.h" diff --git a/Modules/Filtering/Smoothing/include/otbFastNLMeansImageFilter.h b/Modules/Filtering/Smoothing/include/otbFastNLMeansImageFilter.h index a3c33a68112ab9784d1be27087826ffb6ef4e432..6185102caefea9a02493362b18a587a7619d382b 100644 --- a/Modules/Filtering/Smoothing/include/otbFastNLMeansImageFilter.h +++ b/Modules/Filtering/Smoothing/include/otbFastNLMeansImageFilter.h @@ -110,7 +110,7 @@ protected: /** Compute the requested input region, given an output region. * If the input requested region is outside the largest input region, a mirror padding - * is necessary. The returned tuple is composed of the following paramters : + * is necessary. The returned tuple is composed of the following parameters : * * input requested region (always lie inside the largest input region) * * top rows, left cols, bottom rows, right cols : numbers of rows/cols to add with a mirror padding * * boolean : if true, a mirror padding (in at least one direction) has to be computed diff --git a/Modules/IO/ImageIO/include/otbMultiImageFileWriter.h b/Modules/IO/ImageIO/include/otbMultiImageFileWriter.h index 6ea2b7e4229a73d553690d9d321387cc21a067d0..212b181c15fce193e4433eafcbb825fcaf1553dc 100644 --- a/Modules/IO/ImageIO/include/otbMultiImageFileWriter.h +++ b/Modules/IO/ImageIO/include/otbMultiImageFileWriter.h @@ -269,7 +269,7 @@ private: typedef boost::shared_ptr Pointer; /** Get the region that should be written. By default this is the largest possible region - * of the input image, but this might be overriden by the box extended filename parameter of + * of the input image, but this might be overridden by the box extended filename parameter of * the input writer */ itk::ImageRegion<2> GetRegionToWrite() const override; diff --git a/Modules/Segmentation/Conversion/include/otbLabelImageSmallRegionMergingFilter.h b/Modules/Segmentation/Conversion/include/otbLabelImageSmallRegionMergingFilter.h index e65e88369d3a2dccf984342b2885335bfda1f921..0e4ca56429e7b2fbf52b433d400cd3740983b393 100644 --- a/Modules/Segmentation/Conversion/include/otbLabelImageSmallRegionMergingFilter.h +++ b/Modules/Segmentation/Conversion/include/otbLabelImageSmallRegionMergingFilter.h @@ -72,7 +72,7 @@ public: typedef itk::VariableLengthVector RealVectorPixelType; - typedef std::unordered_map> NeigboursMapType; + typedef std::unordered_map> NeighboursMapType; typedef std::unordered_map LabelStatisticType; typedef std::unordered_map LabelPopulationType; @@ -137,7 +137,7 @@ private: LabelStatisticType m_LabelStatistic; /** Neighbours maps for each thread */ - std::vector m_NeighboursMapsTmp; + std::vector m_NeighboursMapsTmp; /** LUT giving correspondance between labels in the original segmentation * and the merged labels */ diff --git a/Modules/Segmentation/Conversion/include/otbLabelImageSmallRegionMergingFilter.hxx b/Modules/Segmentation/Conversion/include/otbLabelImageSmallRegionMergingFilter.hxx index cbb0dddfc094969074b1c57fad72e2b7a61a043b..5922a85439ecaeb17d46fbbe19648bfcf0b2907a 100644 --- a/Modules/Segmentation/Conversion/include/otbLabelImageSmallRegionMergingFilter.hxx +++ b/Modules/Segmentation/Conversion/include/otbLabelImageSmallRegionMergingFilter.hxx @@ -83,7 +83,7 @@ void PersistentLabelImageSmallRegionMergingFilter::Reset() template void PersistentLabelImageSmallRegionMergingFilter::Synthetize() { - NeigboursMapType neighboursMap; + NeighboursMapType neighboursMap; // Merge the neighbours maps from all threads for (unsigned int threadId = 0; threadId < this->GetNumberOfThreads(); threadId++) diff --git a/Packaging/Files/otbenv.bash b/Packaging/Files/otbenv.bash index 72b60c4dd3f3cf1b5a13ab4c907ef26991efbf5a..f9e48c699460d7eee3c75c8428cccf81062d09d8 100644 --- a/Packaging/Files/otbenv.bash +++ b/Packaging/Files/otbenv.bash @@ -44,6 +44,7 @@ unset LD_LIBRARY_PATH PATH=$(cat_path "$CURRENT_DIR/bin" "$PATH") GDAL_DATA=$CURRENT_DIR/share/data +PROJ_LIB=$CURRENT_DIR/share/proj PYTHONPATH=$(cat_path "$CURRENT_DIR/lib/python" "$PYTHONPATH") OTB_APPLICATION_PATH=$(cat_path "$CURRENT_DIR/lib/otb/applications" "$OTB_APPLICATION_PATH") GDAL_DRIVER_PATH="disable" @@ -51,7 +52,7 @@ LC_NUMERIC=C export PATH export GDAL_DATA -export GEOTIFF_CSV +export PROJ_LIB export PYTHONPATH export OTB_APPLICATION_PATH export GDAL_DRIVER_PATH diff --git a/Packaging/Files/otbenv.bat b/Packaging/Files/otbenv.bat index f2a25950bb640c42232504e81469109925ea38cc..720fc23726dae400ab4ec2b9c14cc921058fe570 100644 --- a/Packaging/Files/otbenv.bat +++ b/Packaging/Files/otbenv.bat @@ -26,6 +26,7 @@ call :prefix_path PYTHONPATH "%CURRENT_SCRIPT_DIR%lib\python" call :prefix_path OTB_APPLICATION_PATH "%CURRENT_SCRIPT_DIR%lib\otb\applications" set GDAL_DATA=%CURRENT_SCRIPT_DIR%share\data +set PROJ_LIB=%CURRENT_SCRIPT_DIR%share\proj set GDAL_DRIVER_PATH=disable :: Set numeric locale to C set LC_NUMERIC=C diff --git a/Packaging/Files/otbenv.profile b/Packaging/Files/otbenv.profile index 7475194cec1b0f0b5de5d4ad0f8731078e9ccfc3..8f9ed04c57a0820a491c39758941dc28b6638f7d 100644 --- a/Packaging/Files/otbenv.profile +++ b/Packaging/Files/otbenv.profile @@ -57,12 +57,14 @@ LC_NUMERIC=C # set GDAL_DATA variable used by otb application GDAL_DATA=OUT_DIR/share/gdal +PROJ_LIB=OUT_DIR/share/proj + export GDAL_DRIVER_PATH=disable # export variables export LC_NUMERIC export GDAL_DATA -export GEOTIFF_CSV +export PROJ_LIB export OTB_APPLICATION_PATH export PATH export PYTHONPATH diff --git a/RELEASE_NOTES.txt b/RELEASE_NOTES.txt index 5752f9d0936138979652fd5ae368d1fd3326246f..ff9974ee400b20c09cc65b642d9ce48b8aab3221 100644 --- a/RELEASE_NOTES.txt +++ b/RELEASE_NOTES.txt @@ -1,3 +1,90 @@ +OTB-v 7.1.0 - Changes since version 7.0.0 (March 16th, 2020) +---------------------------------------------------------------- + +Features added: + + + * !681: ENH: allow HTTP GDAL datasets by Laurențiu Nicola + * !673: Smoothing application enhancement by Cédric Traizet + * !655: BUG: migrate to QOpenGLWidget by Victor Poughon + * !644: Fast nlmeans filter by Carole Amiot + * !642: Resolve ExtractROI: keep GCPs by Guillaume Pasero + * !628: Added 'double' application parameter type. by guillaume pernot + * !618: Integration of the multiImageFileWriter in the application engine by Cédric Traizet + +Bugs fixed: + + * !701: Error when opening ENVI datasets by Cédric Traizet + * !699: Fix listview parameter in TrainImagesClassifier + * !679: COMP: Remove RemoteSensingRegion assignment operator by Laurențiu Nicola + * !678: BUG: Fix warnings and possible UB in `VariadicInputsImageFilter::SetInputsImpl` by Laurențiu Nicola + * !677: Fix debian build by Cédric Traizet + * !674: BUG: Fix nodata handling in StreamingStatisticsMapFromLabelImageFilter by Laurențiu Nicola + * !667: Short Integer overflow in tests by Cédric Traizet + * !662: Update netcdf version in Superbuild to 4.7.3 by Cédric Traizet + * !660: COMP: Fix Variadic Input Image Filters for g++8.2.0 by Luc Hermitte + * !658: Allow UserValue modification from within application's DoExecute by guillaume pernot + * !656: input centroid should not be mandatory in TrainVectorClassifier and TrainImagesClassifier by Cédric Traizet + * !655: BUG: migrate to QOpenGLWidget by Victor Poughon + * !654: Missing RAM parameter in StereoRectificationGridGenerator application by Julien Michel + * !653: Warning cleaning by Guillaume Pasero + * !649: Resolve \Mosaic do not work anymore with rgb mode\ by Rémi Cresson + * !647: Fixed lookup table stacking order by guillaume pernot + * !646: removed duplicate Scene.png by guillaume pernot + * !641: FIX PCA transformation matrix computation by Cédric Traizet + * !640: Fixed lost reference of \buffer\ in VectorPrediction update mode by guillaume pernot + * !637: BUG: better check for TIXML_USE_STL by Victor Poughon + * !636: Fix gcc8 compilation by guillaume pernot + * !634: COMP: Added gcc9 support for ITK by guillaume pernot + * !633: Added otb_opencv_api.h in packages by guillaume pernot + * !626: FIX: check that input image is not null by Rémi Cresson + * !624: Fix GEOS errors from self intersecting polygons in and fix OPENCV path in debian CI build by Cédric Traizet + * !617: TEST: Force ITK_GLOBAL_DEFAULT_NUMBER_OF_THREADS=4 by guillaume pernot + * !616: TEST: rename ToulousePoints-examples.shp to toulousepoints_examples.shp by guillaume pernot + * !613: Additional tests for the ExtractROI application by Cédric Traizet + * !606: Check band index on each pixel by guillaume pernot + +Refactoring: + + * !673: Smoothing application enhancement by Cédric Traizet + * !671: Update diapotb git tag by Cédric Traizet + * !667: Short Integer overflow in tests by Cédric Traizet + * !662: Update netcdf version in Superbuild to 4.7.3 by Cédric Traizet + * !657: Drop OpenCV 2 support by Cédric Traizet + * !652: Update openjpeg version in superbuild by David Youssefi + * !651: Resolve \Move FilterFunctionValues and MetadataKey to OTBMetadata\ by Guillaume Pasero + * !631: Upgrade PROJ GEOTIFF and GDAL in Superbuild by Cédric Traizet + * !619: Some work on BandMathX tests by guillaume pernot + * !614: Stop in cmake configure when the compiler is not supported by Cédric Traizet + * !613: Additional tests for the ExtractROI application by Cédric Traizet + * !607: CMake Code Cleaning (part 1) by Victor Poughon + +CI: + + * !680: CI: Split conda-build and conda-deploy by guillaume pernot + * !676: Fixed conda-build by guillaume pernot + * !675: CI: Fixed debian-build and conda-build 'needs' by guillaume pernot + * !672: Fix CookBook deployment by Cédric Traizet + * !669: CI: Prelimenary conda build by guillaume pernot + * !666: Out-of-order jobs execution by Sébastien Dinot + * !665: Identify Arthur Vincent as contributor in .mailmap by Sébastien Dinot + * !664: test MacOS mojave on CI by Cédric Traizet + * !663: ENH: Update .mailmap file for Luc Hermitte by Luc Hermitte + * !638: Use proper cmake file for debian-testing CI by guillaume pernot + * !635: CI: debian-build uses debian/testing by guillaume pernot + * !630: CI: Added CI_ALLOW_FAILURE for cdash_handler.py by guillaume pernot + * !629: CI: Allow failure of debian/unstable build by guillaume pernot + * !615: CI: allow sonarqube to run on forked tree by guillaume pernot + * !610: CI: Fixed error computation in otbBandMathXImageFilter by guillaume pernot + * !574: Deploy cookbook by Antoine Regimbeau + +Documentation: + + * !639: Update QGISInterface.rst to clarify plugin setup with QGIS > 3.8 by guillaume pernot + * !611: Update the CompilingOTBFromSource Cookbook section by Cédric Traizet + * !604: Document matrix variable definition limitation in BandMathX by Cédric Traizet + + OTB-v.7.0.0 - Changes since version 6.6.0 (October 29th, 2019) ---------------------------------------------------------------- @@ -176,7 +263,7 @@ Bugs fixed: * !168: Resolve "Generation of Qgis plugin descriptors fails with latest develop" by Julien Michel * !159: BUG: Improve Convert and DynamicConvert mask handling (fix #1647) by Victor Poughon * !157: Resolve "install qgis descriptors into /share/ on all platforms" by Rashad Kanavath - * !156: BUG fix issue 1656 related to eratic behavior of cmake configuration by Manuel Grizonnet + * !156: BUG fix issue 1656 related to erratic behavior of cmake configuration by Manuel Grizonnet * !155: BUG: Be compliant with new cmake policy CMP0072 with cmake > 3.11 by Manuel Grizonnet * !142: BUG: fix issue #1639 Update UserValue flag in QtWidgetParameterList by Manuel Grizonnet * !126: BUG: Remove workaround for QT bug 22829 by Victor Poughon