From 78e67ad42042dd321a02c859b24f9eecd9e01802 Mon Sep 17 00:00:00 2001 From: Devon Tucker Date: Tue, 25 Oct 2016 15:59:52 -0700 Subject: [PATCH] [GEOT-5556] Add mosaic config to config map when updating existing mosaic - Ensure CRS is correctly set for new CRS bound mosaic collector - Test case for updating mosaic --- .../imagemosaic/ImageMosaicConfigHandler.java | 1 + .../ReprojectingSubmosaicProducer.java | 2 +- .../gce/imagemosaic/HeterogenousCRSTest.java | 27 ++++++++++++++++++ .../red_blue_update_test.tiff | Bin 0 -> 884 bytes 4 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 modules/plugin/imagemosaic/src/test/resources/org/geotools/gce/imagemosaic/test-data/red_blue_results/red_blue_update_test.tiff diff --git a/modules/plugin/imagemosaic/src/main/java/org/geotools/gce/imagemosaic/ImageMosaicConfigHandler.java b/modules/plugin/imagemosaic/src/main/java/org/geotools/gce/imagemosaic/ImageMosaicConfigHandler.java index d597a649aaf..867baeb0b7e 100644 --- a/modules/plugin/imagemosaic/src/main/java/org/geotools/gce/imagemosaic/ImageMosaicConfigHandler.java +++ b/modules/plugin/imagemosaic/src/main/java/org/geotools/gce/imagemosaic/ImageMosaicConfigHandler.java @@ -1292,6 +1292,7 @@ public void updateConfiguration(GridCoverage2DReader coverageReader, // Get the manager for this coverage so it can be updated rasterManager = getParentReader().getRasterManager(targetCoverageName); mosaicConfiguration = rasterManager.getConfiguration(); + this.configurations.put(mosaicConfiguration.getName(), mosaicConfiguration); } // STEP 2 diff --git a/modules/plugin/imagemosaic/src/main/java/org/geotools/gce/imagemosaic/granulecollector/ReprojectingSubmosaicProducer.java b/modules/plugin/imagemosaic/src/main/java/org/geotools/gce/imagemosaic/granulecollector/ReprojectingSubmosaicProducer.java index 0d2ac7552fe..cc4972ec388 100644 --- a/modules/plugin/imagemosaic/src/main/java/org/geotools/gce/imagemosaic/granulecollector/ReprojectingSubmosaicProducer.java +++ b/modules/plugin/imagemosaic/src/main/java/org/geotools/gce/imagemosaic/granulecollector/ReprojectingSubmosaicProducer.java @@ -111,7 +111,7 @@ public boolean accept(GranuleDescriptor granuleDescriptor) { this.currentSubmosaicProducer = new CRSBoundMosaicProducer( rasterLayerResponse, dryRun, - currentCRS, granuleDescriptor); + granuleDescriptor.getGranuleEnvelope().getCoordinateReferenceSystem(), granuleDescriptor); perMosaicProducers.add(currentSubmosaicProducer); accepted = currentSubmosaicProducer.acceptGranule(granuleDescriptor); } diff --git a/modules/plugin/imagemosaic/src/test/java/org/geotools/gce/imagemosaic/HeterogenousCRSTest.java b/modules/plugin/imagemosaic/src/test/java/org/geotools/gce/imagemosaic/HeterogenousCRSTest.java index 5fbbab16783..6e453501e65 100644 --- a/modules/plugin/imagemosaic/src/test/java/org/geotools/gce/imagemosaic/HeterogenousCRSTest.java +++ b/modules/plugin/imagemosaic/src/test/java/org/geotools/gce/imagemosaic/HeterogenousCRSTest.java @@ -19,6 +19,7 @@ import java.awt.image.RenderedImage; import java.io.File; +import java.io.FileNotFoundException; import java.io.IOException; import java.net.URISyntaxException; import java.net.URL; @@ -26,9 +27,11 @@ import java.util.Arrays; import java.util.Collection; +import javax.imageio.ImageIO; import javax.media.jai.Interpolation; import org.apache.commons.io.FileUtils; +import org.geotools.TestData; import org.geotools.coverage.grid.GridCoverage2D; import org.geotools.coverage.grid.io.AbstractGridFormat; import org.geotools.factory.Hints; @@ -70,6 +73,30 @@ public void testWithInterpolation() throws IOException, URISyntaxException { testMosaic("diff_crs_sorting_test", "resolution D, crs A", null, "EPSG:32610", interpolationParam); } + @Test + public void testUpdatingMosaic() throws IOException, URISyntaxException { + File second = TestData.file(this, "heterogeneous_crs/zblue.tiff"); + File indexer = TestData.file(this, "heterogeneous_crs/indexer.properties"); + File first = TestData.file(this, "heterogeneous_crs/red.tiff"); + File resultsImage = TestData.file(this, "red_blue_results/red_blue_update_test.tiff"); + + File testStoreDirectory = crsMosaicFolder.newFolder("updateTest"); + + FileUtils.copyFile(first, new File(testStoreDirectory, first.getName())); + FileUtils.copyFile(indexer, new File(testStoreDirectory, indexer.getName())); + + ImageMosaicReader reader = new ImageMosaicReader(testStoreDirectory); + File sfdemDest = new File(testStoreDirectory, second.getName()); + FileUtils.copyFile(second, sfdemDest); + + reader.harvest(null, sfdemDest, null); + + GridCoverage2D gc2d = reader.read(new GeneralParameterValue[0]); + + RenderedImage renderImage = gc2d.getRenderedImage(); + ImageAssert.assertEquals(resultsImage, renderImage, 1000); + } + private void testMosaic(String testLocation, String sortOrder, String resultLocation, String expectedCRS, GeneralParameterValue... params) diff --git a/modules/plugin/imagemosaic/src/test/resources/org/geotools/gce/imagemosaic/test-data/red_blue_results/red_blue_update_test.tiff b/modules/plugin/imagemosaic/src/test/resources/org/geotools/gce/imagemosaic/test-data/red_blue_results/red_blue_update_test.tiff new file mode 100644 index 0000000000000000000000000000000000000000..9789a2080919c2a382392143f11664bb4c5b2a84 GIT binary patch literal 884 zcmcIgF%H5o5c9QwG5`_-Ai>Ij_)8bw#xoch85kHDc>q5tz9&GXfW4!Xfu~qT0T;wGXrBltnFpSXECP1K%cMEW3PV2&xXL== zn{2cE{VShZT`qjUox={yypVmc_?||g25K$xU#;k~XIF^Tx7}k_o8})qo%>5}e6K$@ m{H?4$Iq!Vx&CBNW@g#pkoL$U}q*uOcee!nsY(M5$p7$r~XWYjC literal 0 HcmV?d00001