Hi Jody, In answer to your subsequent questions:
- I haven't created a bug report yet as I've been assuming that I'm doing something wrong. I'm happy to create an issue outlining the process that I included at the top of the thread. Once done, I'll mention it here. - Enabling advanced projection handing results in a "Bursa wolf parameters required" error. The projection is based on "+proj=eqc +lat_ts=0 +lat_0=0 +lon_0=140.7 +x_0=0 +y_0=0 +ellps=WGS84 +units=m" and I enabled advanced projection handling via the StreamingRenderer's hints. ... StreamingRenderer renderer = new StreamingRenderer(); Map<Object, Object> rendererParams = new HashMap<>(); rendererParams.put(StreamingRenderer.ADVANCED_PROJECTION_HANDLING_KEY, Boolean.TRUE); renderer.setRendererHints(rendererParams); ... org.opengis.referencing.operation.OperationNotFoundException: Bursa wolf parameters required. at org.geotools.referencing.operation.DefaultCoordinateOperationFactory.createOperationStep(DefaultCoordinateOperationFactory.java:1220) at org.geotools.referencing.operation.DefaultCoordinateOperationFactory.createOperationStep(DefaultCoordinateOperationFactory.java:1281) at org.geotools.referencing.operation.DefaultCoordinateOperationFactory.createOperationStep(DefaultCoordinateOperationFactory.java:922) at org.geotools.referencing.operation.DefaultCoordinateOperationFactory.findOperationSteps(DefaultCoordinateOperationFactory.java:1006) at org.geotools.referencing.operation.DefaultCoordinateOperationFactory.findOperations(DefaultCoordinateOperationFactory.java:341) at org.geotools.referencing.operation.DefaultCoordinateOperationFactory.createOperation(DefaultCoordinateOperationFactory.java:206) at org.geotools.referencing.operation.BufferedCoordinateOperationFactory.createOperation(BufferedCoordinateOperationFactory.java:233) at org.geotools.referencing.CRS.findMathTransform(CRS.java:1266) at org.geotools.referencing.CRS.findMathTransform(CRS.java:1234) at org.geotools.coverage.grid.io.ReadResolutionCalculator.<init>(ReadResolutionCalculator.java:91) at org.geotools.renderer.lite.gridcoverage2d.GridCoverageReaderHelper.computeReadingGeometry(GridCoverageReaderHelper.java:500) at org.geotools.renderer.lite.gridcoverage2d.GridCoverageReaderHelper.readCoverageInEnvelope(GridCoverageReaderHelper.java:363) at org.geotools.renderer.lite.gridcoverage2d.GridCoverageReaderHelper.readCoverages(GridCoverageReaderHelper.java:247) at org.geotools.renderer.lite.gridcoverage2d.GridCoverageRenderer.renderImage(GridCoverageRenderer.java:690) at org.geotools.renderer.lite.gridcoverage2d.GridCoverageRenderer.paint(GridCoverageRenderer.java:897) at org.geotools.renderer.lite.StreamingRenderer$RenderCoverageReaderRequest.execute(StreamingRenderer.java:3880) at org.geotools.renderer.lite.StreamingRenderer$PainterThread.run(StreamingRenderer.java:3991) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:830) Andrew On Thu, 9 Apr 2020 at 09:54, Andrew Miskelly <amiske...@weatherzone.com.au> wrote: > Yes, sorry about that. My reply to your previous email follows, without > the inline images, and I'll reply again to address your most recent email. > > No, I haven't managed to solve this. > > I wasn't using JAI-EXT but a static call to JAIExt.initJAIEXT() in the > test class has not changed the results. (I'm also using 23-RC, in order to > assist with the testing effort.) > > The starting image, in +proj=eqc +lon_0=140.7 +ellps=WGS84, looks like the > following (Australia in the middle longitudes; ±180° about 3/4 across from > the left): > https://anero.id/geotools-202003/himawari-8-visible-eqc.tif > > When I reproject to a full world web mercator tile using GeoTools, and the > test case outlined earlier, I get a gap between 140.7°E and 180°E (i.e. the > right hand side): > https://anero.id/geotools-202003/geotools-web-mercator.png > > Regards, > > Andrew > > On Tue, 7 Apr 2020 at 04:22, Jody Garnett <jody.garn...@gmail.com> wrote: > >> I love seeing your test data, although I expect that only went to me as >> the mailing list blocks emails past a specific size. >> >> Next I have a couple obvious questions: >> >> - I have not looked yet, did you reported this as a bug to the issue >> tracker, having a test case (and test data) very much helps reproduce the >> issue. >> - Have you enabled advanced reprojection handling >> <https://docs.geotools.org/latest/userguide/faq.html#q-what-about-raster-advanced-projection-handling> >> (which is specially for this kind of problem) >> >> I am not familiar with this specific area of the code; but I am >> interested in learning the resolution. >> >> -- >> Jody Garnett >> >> >> On Thu, 2 Apr 2020 at 15:59, Andrew Miskelly < >> amiske...@weatherzone.com.au> wrote: >> >>> Hi Jody, >>> >>> No, I haven't managed to solve this. >>> >>> I wasn't using JAI-EXT but a static call to JAIExt.initJAIEXT() in the >>> test class has not changed the results. (I'm also using 23-RC, in order to >>> assist with the testing effort.) >>> >>> The starting image, in +proj=eqc +lon_0=140.7 +ellps=WGS84, looks like >>> the following (Australia in the middle longitudes; ±180° about 3/4 across >>> from the left): >>> >>> When I reproject to a full world web mercator tile using GeoTools, and >>> the test case outlined earlier, I get a gap between 140.7°E and 180°E (i.e. >>> the right hand side): >>> >>> Regards, >>> >>> Andrew >>> >>> >>> On Fri, 3 Apr 2020 at 05:51, Jody Garnett <jody.garn...@gmail.com> >>> wrote: >>> >>>> I was curious if you resolved this issue? Some care has been taken with >>>> JAI-EXT operations to better handle no data etc... can you confirm your >>>> system is setup to use these operations? >>>> JAI itself has some ideas for extending the border area to prevent >>>> artifacts near edges ideally a solution would hook into this. >>>> -- >>>> Jody Garnett >>>> >>>> >>>> On Mon, 16 Mar 2020 at 21:13, Andrew Miskelly < >>>> amiske...@weatherzone.com.au> wrote: >>>> >>>>> Hi GeoTools people, >>>>> >>>>> I have a pipeline for data from geostationary satellites which >>>>> involves the following: >>>>> >>>>> - use GDAL to reproject the data from its native, geostationary >>>>> projection to a cylindrical projection >>>>> - use GDAL to arrange the data into a cloud optimised GeoTIFF >>>>> - use a GeoTools based server to render imagery from the COG to >>>>> clients >>>>> >>>>> The reason for reprojecting is that I've never been able to get >>>>> GeoTools to transform from the geostationary projections. >>>>> >>>>> A basic geographic projection is fine in cases where the satellite is >>>>> centred nearer to 0°E but when its field of view encompasses the dateline >>>>> it's helpful to use an equidistant cylindrical projection that's centred >>>>> on >>>>> the same longitude as the satellite. That avoids dealing with an image >>>>> which spans from 180°W to 180°E and comprises mostly "nodata" pixels (with >>>>> the data at the left and right edges). >>>>> >>>>> When rendering the latter images using GeoTools, though, I get a band >>>>> of missing data near the dateline. I'm wondering whether anybody can see >>>>> where I'm going wrong. >>>>> >>>>> To reproduce: >>>>> >>>>> The following is an image produced from Himawari-8's visible red band, >>>>> in the native geostationary projection. >>>>> https://anero.id/geotools-202003/himawari-8-visible.tif >>>>> >>>>> Here it is after reprojecting to +proj=eqc +lon_0=140.7 +ellps=WGS84 >>>>> using GDAL. >>>>> https://anero.id/geotools-202003/himawari-8-visible-eqc.tif >>>>> >>>>> And here's the image from GeoTools, rendered using the code below. >>>>> Note the band of missing data between about 140°E (the central meridian of >>>>> the projection?) and the 180°E (the right hand side of the image). >>>>> https://anero.id/geotools-202003/geotools-web-mercator.png >>>>> >>>>> public void test(File in /* himawari-8-visible-eqc.tif */, File out >>>>> /* geotools-web-mercator.png */) { >>>>> AbstractGridFormat format = GridFormatFinder.findFormat(in); >>>>> AbstractGridCoverage2DReader reader = format.getReader(in); >>>>> >>>>> Layer rasterLayer = new GridReaderLayer(reader, >>>>> >>>>> SLD.wrapSymbolizers(CommonFactoryFinder.getStyleFactory().getDefaultRasterSymbolizer())); >>>>> >>>>> MapContent mapContent = new MapContent(); >>>>> mapContent.addLayer(rasterLayer); >>>>> >>>>> StreamingRenderer renderer = new StreamingRenderer(); >>>>> //Map<Object, Object> rendererParams = new HashMap<>(); >>>>> //rendererParams.put(StreamingRenderer.CONTINUOUS_MAP_WRAPPING, >>>>> Boolean.TRUE); >>>>> //renderer.setRendererHints(rendererParams); // had no effect >>>>> renderer.setMapContent(mapContent); >>>>> >>>>> BufferedImage image = new BufferedImage(2048, 2048, >>>>> BufferedImage.TYPE_INT_RGB); >>>>> try { >>>>> renderer.paint(image.createGraphics(), >>>>> new Rectangle(image.getWidth(), image.getHeight()), >>>>> new ReferencedEnvelope( >>>>> -20026376.39, 20026376.39, -20026376.39, >>>>> 20026376.39, CRS.decode("EPSG:3857"))); >>>>> >>>>> ImageIO.write(image, "png", out); >>>>> } catch (Exception e) { >>>>> e.printStackTrace(); >>>>> } >>>>> } >>>>> >>>>> Many thanks in advance for any help. >>>>> >>>>> Regards, >>>>> >>>>> Andrew >>>>> >>>>> _______________________________________________ >>>>> GeoTools-GT2-Users mailing list >>>>> GeoTools-GT2-Users@lists.sourceforge.net >>>>> https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users >>>> >>>>
_______________________________________________ GeoTools-GT2-Users mailing list GeoTools-GT2-Users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users