@@ -62,6 +62,7 @@ public class CoverageViewTest extends GeoServerSystemTestSupport {
62
62
private static final String RGB_IR_VIEW = "RgbIrView" ;
63
63
private static final String BANDS_FLAGS_VIEW = "BandsFlagsView" ;
64
64
private static final String NDVI_VIEW = "NDVI" ;
65
+ private static final String NDVI_VIEW2 = "NDVI2" ;
65
66
private static final String BGR_VIEW = "BGR" ;
66
67
private static final double ERROR = 1E-5 ;
67
68
protected static QName WATTEMP = new QName (MockData .SF_URI , "watertemp" , MockData .SF_PREFIX );
@@ -96,6 +97,7 @@ protected void onSetUp(SystemTestData testData) throws Exception {
96
97
configureIROnCatalog (cat );
97
98
configureBandsFlagsOnCatalog (cat );
98
99
configureNDVIonCatalog (cat );
100
+ configureNDVI2 (cat );
99
101
configureBGRonCatalogWithJiffle (cat );
100
102
}
101
103
@@ -129,7 +131,7 @@ private void configureNDVIonCatalog(Catalog cat) throws Exception {
129
131
final CoverageStoreInfo storeInfo = cat .getCoverageStoreByName ("s2reduced" );
130
132
InputCoverageBand ib04 = new InputCoverageBand ("B04" , "0" );
131
133
InputCoverageBand ib08 = new InputCoverageBand ("B08" , "0" );
132
- final CoverageBand ndvi = new CoverageBand (Arrays .asList (ib04 , ib08 ), "ndvi " , 0 , CompositionType .JIFFLE );
134
+ final CoverageBand ndvi = new CoverageBand (Arrays .asList (ib04 , ib08 ), "NDVI " , 0 , CompositionType .JIFFLE );
133
135
final CoverageView coverageView = new CoverageView (NDVI_VIEW , Collections .singletonList (ndvi ));
134
136
coverageView .setOutputName ("NDVI" );
135
137
coverageView .setDefinition ("NDVI = (B08 - B04) / (B04 + B08);" );
@@ -140,6 +142,22 @@ private void configureNDVIonCatalog(Catalog cat) throws Exception {
140
142
cat .add (coverageInfo );
141
143
}
142
144
145
+ private void configureNDVI2 (Catalog cat ) throws Exception {
146
+ final CoverageStoreInfo storeInfo = cat .getCoverageStoreByName ("s2reduced" );
147
+ InputCoverageBand ib04 = new InputCoverageBand ("B04" , "0" );
148
+ InputCoverageBand ib08 = new InputCoverageBand ("B08" , "0" );
149
+ // set bands in a different order
150
+ final CoverageBand ndvi = new CoverageBand (Arrays .asList (ib08 , ib04 ), "NDVI2" , 0 , CompositionType .JIFFLE );
151
+ final CoverageView coverageView = new CoverageView (NDVI_VIEW2 , Collections .singletonList (ndvi ));
152
+ coverageView .setOutputName ("NDVI2" );
153
+ coverageView .setDefinition ("A=B08; B=B04; NDVI2=(A-B)/(B+A);" );
154
+ coverageView .setCompositionType (CompositionType .JIFFLE );
155
+ final CatalogBuilder builder = new CatalogBuilder (cat );
156
+ builder .setStore (storeInfo );
157
+ final CoverageInfo coverageInfo = coverageView .createCoverageInfo (NDVI_VIEW2 , storeInfo , builder );
158
+ cat .add (coverageInfo );
159
+ }
160
+
143
161
private void configureBGRonCatalogWithJiffle (Catalog cat ) throws Exception {
144
162
// Let's do bands swap with jiffle
145
163
final CoverageStoreInfo storeInfo = cat .getCoverageStoreByName ("ir-rgb" );
@@ -250,12 +268,14 @@ public void testCoverageView() throws Exception {
250
268
}
251
269
252
270
private void disposeCoverage (GridCoverage coverage ) {
253
- RenderedImage ri = coverage .getRenderedImage ();
254
- if (coverage instanceof GridCoverage2D ) {
255
- ((GridCoverage2D ) coverage ).dispose (true );
256
- }
257
- if (ri instanceof PlanarImage ) {
258
- ImageUtilities .disposePlanarImageChain ((PlanarImage ) ri );
271
+ if (coverage != null ) {
272
+ RenderedImage ri = coverage .getRenderedImage ();
273
+ if (coverage instanceof GridCoverage2D ) {
274
+ ((GridCoverage2D ) coverage ).dispose (true );
275
+ }
276
+ if (ri instanceof PlanarImage ) {
277
+ ImageUtilities .disposePlanarImageChain ((PlanarImage ) ri );
278
+ }
259
279
}
260
280
}
261
281
@@ -309,19 +329,30 @@ public void testBands() throws Exception {
309
329
310
330
@ Test
311
331
public void testNDVIJiffle () throws Exception {
312
- Catalog cat = getCatalog ();
313
- CoverageInfo coverageInfo = cat .getCoverageByName (NDVI_VIEW );
314
- final ResourcePool rp = cat .getResourcePool ();
315
- GridCoverageReader reader = rp .getGridCoverageReader (coverageInfo , NDVI_VIEW , null );
316
- GridCoverage2D solidCoverage = (GridCoverage2D ) reader .read (NDVI_VIEW , null );
332
+ assertNdvi ("NDVI" );
333
+ }
317
334
318
- GridCoverageReader rb04 = rp . getGridCoverageReader ( cat . getCoverageByName ( "B04" ), "B04" , null );
319
- GridCoverageReader rb08 = rp . getGridCoverageReader ( cat . getCoverageByName ( "B08" ), "B08" , null );
320
- GridCoverage b04Coverage = rb04 . read ( "B04" , null );
321
- GridCoverage b08Coverage = rb08 . read ( "B08" , null );
335
+ @ Test
336
+ public void testNDVI2Jiffle () throws Exception {
337
+ assertNdvi ( "NDVI2" );
338
+ }
322
339
340
+ private void assertNdvi (String viewName ) throws Exception {
341
+ GridCoverage2D solidCoverage = null ;
342
+ GridCoverage b04Coverage = null ;
343
+ GridCoverage b08Coverage = null ;
323
344
try {
324
- assertBandNames (solidCoverage , "NDVI" );
345
+ Catalog cat = getCatalog ();
346
+ CoverageInfo coverageInfo = cat .getCoverageByName (viewName );
347
+ final ResourcePool rp = cat .getResourcePool ();
348
+ GridCoverageReader reader = rp .getGridCoverageReader (coverageInfo , viewName , null );
349
+ solidCoverage = (GridCoverage2D ) reader .read (viewName , null );
350
+ assertBandNames (solidCoverage , viewName );
351
+ GridCoverageReader rb04 = rp .getGridCoverageReader (cat .getCoverageByName ("B04" ), "B04" , null );
352
+ GridCoverageReader rb08 = rp .getGridCoverageReader (cat .getCoverageByName ("B08" ), "B08" , null );
353
+ b04Coverage = rb04 .read ("B04" , null );
354
+ b08Coverage = rb08 .read ("B08" , null );
355
+
325
356
RenderedImage ri = solidCoverage .getRenderedImage ();
326
357
Raster raster = ri .getData ();
327
358
Raster b04 = b04Coverage .getRenderedImage ().getData ();
@@ -339,7 +370,6 @@ public void testNDVIJiffle() throws Exception {
339
370
assertEquals (d , ndvi , ERROR );
340
371
}
341
372
}
342
-
343
373
} finally {
344
374
disposeCoverage (solidCoverage );
345
375
disposeCoverage (b04Coverage );
0 commit comments