The bug report is at https://osgeo-org.atlassian.net/browse/GEOT-6547.
Andrew On Tue, 14 Apr 2020 at 03:34, Jody Garnett <jody.garn...@gmail.com> wrote: > Please don't assume you have done something wrong, that is always a clue > that you have found a problem or the documentation needs help (which is a > also a chance to contribute). > > I will keep a look out for your bug report, ideally you could get this in > before tomorrows level meeting. > -- > Jody Garnett > > > On Wed, 8 Apr 2020 at 16:56, Andrew Miskelly <amiske...@weatherzone.com.au> > wrote: > >> 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