27 #include <terralib_buildconfig.h> 30 #include "../Config.h" 33 #include <boost/test/unit_test.hpp> 37 void createTestRaster(
unsigned int nBands,
unsigned int nLines,
40 std::vector< te::rst::BandProperty * > bandsProps;
41 for(
unsigned int bandsPropsIdx = 0 ; bandsPropsIdx < nBands ; ++bandsPropsIdx )
48 std::map< std::string, std::string >(), 0, 0 ) );
55 for( band = 0 ; band < nBands ; ++
band )
61 rasterPointer->setValue( col, line, pixelValue, band );
71 createTestRaster( 2, 4, 4, rasterPointer );
73 std::vector< std::complex<double> > noDataValues;
74 noDataValues.resize( rasterPointer->getNumberOfBands(), std::complex<double>(
80 std::complex<double> v;
83 BOOST_CHECK_CLOSE( 0.0, v.real(), 0.0000000001 );
84 BOOST_CHECK_CLOSE( 0.0, v.imag(), 0.0000000001 );
86 interp.getValue( ((
double)rasterPointer->getNumberOfColumns()) - 0.3 , -0.7, v, 0 );
87 BOOST_CHECK_CLOSE( 0.0, v.real(), 0.0000000001 );
88 BOOST_CHECK_CLOSE( 0.0, v.imag(), 0.0000000001 );
90 interp.getValue( ((
double)rasterPointer->getNumberOfColumns()) - 0.3 ,
91 ((
double)rasterPointer->getNumberOfRows()) - 0.3, v, 0 );
92 BOOST_CHECK_CLOSE( 0.0, v.real(), 0.0000000001 );
93 BOOST_CHECK_CLOSE( 0.0, v.imag(), 0.0000000001 );
95 interp.getValue( -0.7 ,
96 ((
double)rasterPointer->getNumberOfRows()) - 0.3, v, 0 );
97 BOOST_CHECK_CLOSE( 0.0, v.real(), 0.0000000001 );
98 BOOST_CHECK_CLOSE( 0.0, v.imag(), 0.0000000001 );
100 interp.getValue( 1.5 , 1.5, v, 0 );
101 BOOST_CHECK_CLOSE( 10.0, v.real(), 0.0000000001 );
102 BOOST_CHECK_CLOSE( 0.0, v.imag(), 0.0000000001 );
104 interp.getValue( 1.5 , 1.5, v, 1 );
105 BOOST_CHECK_CLOSE( 26.0, v.real(), 0.0000000001 );
106 BOOST_CHECK_CLOSE( 0.0, v.imag(), 0.0000000001 );
112 createTestRaster( 2, 4, 4, rasterPointer );
114 std::vector< std::complex<double> > noDataValues;
115 noDataValues.resize( rasterPointer->getNumberOfBands(), std::complex<double>(
121 std::complex<double> v;
123 interp.
getValue( -0.7, -0.7, v, 0 );
124 BOOST_CHECK_CLOSE( 0.0, v.real(), 0.0000000001 );
125 BOOST_CHECK_CLOSE( 0.0, v.imag(), 0.0000000001 );
127 interp.getValue( ((
double)rasterPointer->getNumberOfColumns()) - 0.3 , -0.7, v, 0 );
128 BOOST_CHECK_CLOSE( 0.0, v.real(), 0.0000000001 );
129 BOOST_CHECK_CLOSE( 0.0, v.imag(), 0.0000000001 );
131 interp.getValue( ((
double)rasterPointer->getNumberOfColumns()) - 0.3 ,
132 ((
double)rasterPointer->getNumberOfRows()) - 0.3, v, 0 );
133 BOOST_CHECK_CLOSE( 0.0, v.real(), 0.0000000001 );
134 BOOST_CHECK_CLOSE( 0.0, v.imag(), 0.0000000001 );
136 interp.getValue( -0.7 ,
137 ((
double)rasterPointer->getNumberOfRows()) - 0.3, v, 0 );
138 BOOST_CHECK_CLOSE( 0.0, v.real(), 0.0000000001 );
139 BOOST_CHECK_CLOSE( 0.0, v.imag(), 0.0000000001 );
141 interp.getValue( 1.5 , 1.5, v, 0 );
142 BOOST_CHECK_CLOSE( 7.5, v.real(), 0.0000000001 );
143 BOOST_CHECK_CLOSE( 0.0, v.imag(), 0.0000000001 );
145 interp.getValue( 1.5 , 1.5, v, 1 );
146 BOOST_CHECK_CLOSE( 23.5, v.real(), 0.0000000001 );
147 BOOST_CHECK_CLOSE( 0.0, v.imag(), 0.0000000001 );
153 createTestRaster( 2, 4, 4, rasterPointer );
155 std::vector< std::complex<double> > noDataValues;
156 noDataValues.resize( rasterPointer->getNumberOfBands(), std::complex<double>(
162 std::complex<double> v;
164 interp.
getValue( -0.7, -0.7, v, 0 );
165 BOOST_CHECK_CLOSE( 0.0, v.real(), 0.0000000001 );
166 BOOST_CHECK_CLOSE( 0.0, v.imag(), 0.0000000001 );
168 interp.getValue( ((
double)rasterPointer->getNumberOfColumns()) - 0.3 , -0.7, v, 0 );
169 BOOST_CHECK_CLOSE( 0.0, v.real(), 0.0000000001 );
170 BOOST_CHECK_CLOSE( 0.0, v.imag(), 0.0000000001 );
172 interp.getValue( ((
double)rasterPointer->getNumberOfColumns()) - 0.3 ,
173 ((
double)rasterPointer->getNumberOfRows()) - 0.3, v, 0 );
174 BOOST_CHECK_CLOSE( 0.0, v.real(), 0.0000000001 );
175 BOOST_CHECK_CLOSE( 0.0, v.imag(), 0.0000000001 );
177 interp.getValue( -0.7 ,
178 ((
double)rasterPointer->getNumberOfRows()) - 0.3, v, 0 );
179 BOOST_CHECK_CLOSE( 0.0, v.real(), 0.0000000001 );
180 BOOST_CHECK_CLOSE( 0.0, v.imag(), 0.0000000001 );
182 interp.getValue( 1.5 , 1.5, v, 0 );
183 BOOST_CHECK_CLOSE( 7.5, v.real(), 0.0000000001 );
184 BOOST_CHECK_CLOSE( 0.0, v.imag(), 0.0000000001 );
186 interp.getValue( 1.5 , 1.5, v, 1 );
187 BOOST_CHECK_CLOSE( 23.5, v.real(), 0.0000000001 );
188 BOOST_CHECK_CLOSE( 0.0, v.imag(), 0.0000000001 );
191 BOOST_AUTO_TEST_SUITE_END ()
unsigned int unsigned int std::unique_ptr< te::rst::Raster > & rasterPointer
Near neighborhood interpolation method.
BOOST_AUTO_TEST_SUITE(interpolator_tests) void createTestRaster(unsigned int nBands
A raster band description.
It interpolates one pixel based on a selected algorithm. Methods currently available are Nearest Neig...
BOOST_AUTO_TEST_CASE(nearestNeighbor_test)
void getValue(const double &c, const double &r, std::complex< double > &v, const std::size_t &b)
Get the interpolated value at specific band.
unsigned int unsigned int nCols
Bicubic interpolation method.
static Raster * make()
It creates and returns an empty raster with default raster driver.
Bilinear interpolation method.
A rectified grid is the spatial support for raster data.