Re: [Geotools-gt2-users] imagemosaicjdbc: (parentX + width) is outside raster
Hi Eduardo, I'd suggest you to open a ticket in JIra, osgeo-org.atlassian.net/projects/GEOT , I'm not sure the imagemosaic-jdbc author reads this list Cheers Andrea On Fri, Jan 13, 2017 at 1:40 PM, Eduardo Suarez-Santana < e.suarezsant...@gmail.com> wrote: > Sorry about this. Please keep 'y' computation as is, otherwise weird > results: > > diff --git a/modules/plugin/imagemosaic-jdbc/src/main/java/org/ > geotools/gce/imagemosaic/jdbc/ImageDecoderThread.java > b/modules/plugin/imagemosaic-jdbc/src/main/java/org/ > geotools/gce/imagemosaic/jdbc/ImageDecoderThread.java > index ff55c89..7fee122 100644 > --- a/modules/plugin/imagemosaic-jdbc/src/main/java/org/ > geotools/gce/imagemosaic/jdbc/ImageDecoderThread.java > +++ b/modules/plugin/imagemosaic-jdbc/src/main/java/org/ > geotools/gce/imagemosaic/jdbc/ImageDecoderThread.java > @@ -138,12 +138,8 @@ public class ImageDecoderThread extends > AbstractThread { > .round((savedTileEnvelope.getMaximum(1) - tileEnvelope > .getMaximum(1)) > / scaleY)); > - int width = (int) (Math.round(bufferedImage.getWidth() > - / savedTileEnvelope.getSpan(0) > - * tileEnvelope.getSpan(0))); > - int height = (int) (Math.round(bufferedImage.getHeight() > - / savedTileEnvelope.getSpan(1) > - * tileEnvelope.getSpan(1))); > + int width = bufferedImage.getWidth() - x; > + int height = bufferedImage.getHeight() - y; > > if ((width > 0) && (height > 0)) { > > > On Fri, Jan 13, 2017 at 12:15 PM, Eduardo Suarez-Santana < > e.suarezsant...@gmail.com> wrote: > >> I think I found it. >> >> Let the saved tile be 10x10 pixels from 0 to 10, scale = 1 in both x and >> y, and let's try to get a tile described by the corners (2.5,2.5) and >> (12.5,12.5). In this case, x=round((2.5-1)/1)=3 and width=round(10-2.5)=8. >> But 3+8>10 pixels of our saved tile. Hence the error. >> >> So this is my proposed solution: >> >> diff --git a/modules/plugin/imagemosaic-jdbc/src/main/java/org/geotools >> /gce/imagemosaic/jdbc/ImageDecoderThread.java >> b/modules/plugin/imagemosaic-jdbc/src/main/java/org/geotools >> /gce/imagemosaic/jdbc/ImageDecoderThread.java >> index ff55c89..1181321 100644 >> --- a/modules/plugin/imagemosaic-jdbc/src/main/java/org/geotools >> /gce/imagemosaic/jdbc/ImageDecoderThread.java >> +++ b/modules/plugin/imagemosaic-jdbc/src/main/java/org/geotools >> /gce/imagemosaic/jdbc/ImageDecoderThread.java >> @@ -135,15 +135,11 @@ public class ImageDecoderThread extends >> AbstractThread { >> .getMinimum(0)) >> / scaleX)); >> int y = (int) (Math >> - .round((savedTileEnvelope.getMaximum(1) - tileEnvelope >> - .getMaximum(1)) >> + .round((tileEnvelope.getMinimum(1) - savedTileEnvelope >> + .getMinimum(1)) >> / scaleY)); >> - int width = (int) (Math.round(bufferedImage.getWidth() >> - / savedTileEnvelope.getSpan(0) >> - * tileEnvelope.getSpan(0))); >> - int height = (int) (Math.round(bufferedImage.getHeight() >> - / savedTileEnvelope.getSpan(1) >> - * tileEnvelope.getSpan(1))); >> + int width = bufferedImage.getWidth() - x; >> + int height = bufferedImage.getHeight() - y; >> >> if ((width > 0) && (height > 0)) { >> >> The computation of 'y' may be kept as already is, or may be changed as >> proposed. >> >> Error has disappeared. >> >> >> On Fri, Jan 13, 2017 at 10:06 AM, Eduardo Suarez-Santana < >> e.suarezsant...@gmail.com> wrote: >> >>> I'm getting this error while trying to seed some layers in geoserver/gwc >>> via imagemosaicjdbc: >>> >>> ene 13 09:06:41 windserver server[805]: Exception in thread >>> "pool-21-thread-1" >>> java.awt.image.RasterFormatException: (parentX + width) is outside >>> raster >>> ene 13 09:06:41 windserver server[805]: at java.awt.image.WritableRaster. >>> createWritableChild(WritableRaster.java:228) >>> ene 13 09:06:41 windserver server[805]: at java.awt.image.BufferedImage.g >>> etSubimage(BufferedImage.java:1202) >>> ene 13 09:06:41 windserver server[805]: at org.geotools.gce.imagemosaic.j >>> dbc.ImageDecoderThread.run(ImageDecoderThread.java:150) >>> ene 13 09:06:41 windserver server[805]: at java.util.concurrent.ThreadPoo >>> lExecutor.runWorker(ThreadPoolExecutor.java:1142) >>> ene 13 09:06:41 windserver server[805]: at java.util.concurrent.ThreadPoo >>> lExecutor$Worker.run(ThreadPoolExecutor.java:617) >>> ene 13 09:06:41 windserver server[805]: at java.lang.Thread.run(Thread.ja >>> va:745) >>> >>> and looking at the source it doesn't look good to me: >>> >>> diff --git a/modules/plugin/imagemosaic-jdbc/src/main/java/org/geotools >>> /gce/imagemosaic/jdbc/ImageDecoderThread.java >>> b/modules/plugin/imagemosaic-jdbc/src/main/java/org/geotools >>> /gce/imagemosaic/jdbc/ImageDecoderThread.java >>> index ff55c89..b45368f 100644 >>> --- a/modules/plugin/imagemosaic-jdbc/src/main/java/org/geotools >>> /gce/imagemosaic/jdbc/ImageDecoderThread.java >>> +++ b/modules/plugin/imagemosaic-jdbc/src/main/java/org/geotools >>> /gce/imagemosaic/jdbc/ImageDecoderThread.java >>> @@ -135,8 +135,8 @@ public class ImageDecoderThread extends >>> AbstractThread { >>
Re: [Geotools-gt2-users] imagemosaicjdbc: (parentX + width) is outside raster
Sorry about this. Please keep 'y' computation as is, otherwise weird results: diff --git a/modules/plugin/imagemosaic-jdbc/src/main/java/org/geotools/gce/imagemosaic/jdbc/ImageDecoderThread.java b/modules/plugin/imagemosaic-jdbc/src/main/java/org/geotools/gce/imagemosaic/jdbc/ImageDecoderThread.java index ff55c89..7fee122 100644 --- a/modules/plugin/imagemosaic-jdbc/src/main/java/org/geotools/gce/imagemosaic/jdbc/ImageDecoderThread.java +++ b/modules/plugin/imagemosaic-jdbc/src/main/java/org/geotools/gce/imagemosaic/jdbc/ImageDecoderThread.java @@ -138,12 +138,8 @@ public class ImageDecoderThread extends AbstractThread { .round((savedTileEnvelope.getMaximum(1) - tileEnvelope .getMaximum(1)) / scaleY)); - int width = (int) (Math.round(bufferedImage.getWidth() - / savedTileEnvelope.getSpan(0) - * tileEnvelope.getSpan(0))); - int height = (int) (Math.round(bufferedImage.getHeight() - / savedTileEnvelope.getSpan(1) - * tileEnvelope.getSpan(1))); + int width = bufferedImage.getWidth() - x; + int height = bufferedImage.getHeight() - y; if ((width > 0) && (height > 0)) { On Fri, Jan 13, 2017 at 12:15 PM, Eduardo Suarez-Santana < e.suarezsant...@gmail.com> wrote: > I think I found it. > > Let the saved tile be 10x10 pixels from 0 to 10, scale = 1 in both x and > y, and let's try to get a tile described by the corners (2.5,2.5) and > (12.5,12.5). In this case, x=round((2.5-1)/1)=3 and width=round(10-2.5)=8. > But 3+8>10 pixels of our saved tile. Hence the error. > > So this is my proposed solution: > > diff --git a/modules/plugin/imagemosaic-jdbc/src/main/java/org/ > geotools/gce/imagemosaic/jdbc/ImageDecoderThread.java > b/modules/plugin/imagemosaic-jdbc/src/main/java/org/ > geotools/gce/imagemosaic/jdbc/ImageDecoderThread.java > index ff55c89..1181321 100644 > --- a/modules/plugin/imagemosaic-jdbc/src/main/java/org/ > geotools/gce/imagemosaic/jdbc/ImageDecoderThread.java > +++ b/modules/plugin/imagemosaic-jdbc/src/main/java/org/ > geotools/gce/imagemosaic/jdbc/ImageDecoderThread.java > @@ -135,15 +135,11 @@ public class ImageDecoderThread extends > AbstractThread { > .getMinimum(0)) > / scaleX)); > int y = (int) (Math > - .round((savedTileEnvelope.getMaximum(1) - tileEnvelope > - .getMaximum(1)) > + .round((tileEnvelope.getMinimum(1) - savedTileEnvelope > + .getMinimum(1)) > / scaleY)); > - int width = (int) (Math.round(bufferedImage.getWidth() > - / savedTileEnvelope.getSpan(0) > - * tileEnvelope.getSpan(0))); > - int height = (int) (Math.round(bufferedImage.getHeight() > - / savedTileEnvelope.getSpan(1) > - * tileEnvelope.getSpan(1))); > + int width = bufferedImage.getWidth() - x; > + int height = bufferedImage.getHeight() - y; > > if ((width > 0) && (height > 0)) { > > The computation of 'y' may be kept as already is, or may be changed as > proposed. > > Error has disappeared. > > > On Fri, Jan 13, 2017 at 10:06 AM, Eduardo Suarez-Santana < > e.suarezsant...@gmail.com> wrote: > >> I'm getting this error while trying to seed some layers in geoserver/gwc >> via imagemosaicjdbc: >> >> ene 13 09:06:41 windserver server[805]: Exception in thread >> "pool-21-thread-1" >> java.awt.image.RasterFormatException: (parentX + width) is outside raster >> ene 13 09:06:41 windserver server[805]: at java.awt.image.WritableRaster. >> createWritableChild(WritableRaster.java:228) >> ene 13 09:06:41 windserver server[805]: at java.awt.image.BufferedImage.g >> etSubimage(BufferedImage.java:1202) >> ene 13 09:06:41 windserver server[805]: at org.geotools.gce.imagemosaic.j >> dbc.ImageDecoderThread.run(ImageDecoderThread.java:150) >> ene 13 09:06:41 windserver server[805]: at java.util.concurrent.ThreadPoo >> lExecutor.runWorker(ThreadPoolExecutor.java:1142) >> ene 13 09:06:41 windserver server[805]: at java.util.concurrent.ThreadPoo >> lExecutor$Worker.run(ThreadPoolExecutor.java:617) >> ene 13 09:06:41 windserver server[805]: at java.lang.Thread.run(Thread.ja >> va:745) >> >> and looking at the source it doesn't look good to me: >> >> diff --git a/modules/plugin/imagemosaic-jdbc/src/main/java/org/geotools >> /gce/imagemosaic/jdbc/ImageDecoderThread.java >> b/modules/plugin/imagemosaic-jdbc/src/main/java/org/geotools >> /gce/imagemosaic/jdbc/ImageDecoderThread.java >> index ff55c89..b45368f 100644 >> --- a/modules/plugin/imagemosaic-jdbc/src/main/java/org/geotools >> /gce/imagemosaic/jdbc/ImageDecoderThread.java >> +++ b/modules/plugin/imagemosaic-jdbc/src/main/java/org/geotools >> /gce/imagemosaic/jdbc/ImageDecoderThread.java >> @@ -135,8 +135,8 @@ public class ImageDecoderThread extends >> AbstractThread { >> .getMinimum(0)) >> / scaleX)); >> int y = (int) (Math >> - .round((savedTileEnvelope.getMaximum(1) - tileEnvelope >> - .getMaximum(1)) >> + .round((savedTileEnvelope.getMinimum(1) - tileEnvelope >> + .getMinimum(1)) >> / scaleY)); >> int width = (int) (Math.round(bufferedImage.getWidth() >> / savedTileEnvelope.getSpan(0) >> >> Could you please check it out? >> > > ---
Re: [Geotools-gt2-users] imagemosaicjdbc: (parentX + width) is outside raster
I think I found it. Let the saved tile be 10x10 pixels from 0 to 10, scale = 1 in both x and y, and let's try to get a tile described by the corners (2.5,2.5) and (12.5,12.5). In this case, x=round((2.5-1)/1)=3 and width=round(10-2.5)=8. But 3+8>10 pixels of our saved tile. Hence the error. So this is my proposed solution: diff --git a/modules/plugin/imagemosaic-jdbc/src/main/java/org/geotools/gce/imagemosaic/jdbc/ImageDecoderThread.java b/modules/plugin/imagemosaic-jdbc/src/main/java/org/geotools/gce/imagemosaic/jdbc/ImageDecoderThread.java index ff55c89..1181321 100644 --- a/modules/plugin/imagemosaic-jdbc/src/main/java/org/geotools/gce/imagemosaic/jdbc/ImageDecoderThread.java +++ b/modules/plugin/imagemosaic-jdbc/src/main/java/org/geotools/gce/imagemosaic/jdbc/ImageDecoderThread.java @@ -135,15 +135,11 @@ public class ImageDecoderThread extends AbstractThread { .getMinimum(0)) / scaleX)); int y = (int) (Math - .round((savedTileEnvelope.getMaximum(1) - tileEnvelope - .getMaximum(1)) + .round((tileEnvelope.getMinimum(1) - savedTileEnvelope + .getMinimum(1)) / scaleY)); - int width = (int) (Math.round(bufferedImage.getWidth() - / savedTileEnvelope.getSpan(0) - * tileEnvelope.getSpan(0))); - int height = (int) (Math.round(bufferedImage.getHeight() - / savedTileEnvelope.getSpan(1) - * tileEnvelope.getSpan(1))); + int width = bufferedImage.getWidth() - x; + int height = bufferedImage.getHeight() - y; if ((width > 0) && (height > 0)) { The computation of 'y' may be kept as already is, or may be changed as proposed. Error has disappeared. On Fri, Jan 13, 2017 at 10:06 AM, Eduardo Suarez-Santana < e.suarezsant...@gmail.com> wrote: > I'm getting this error while trying to seed some layers in geoserver/gwc > via imagemosaicjdbc: > > ene 13 09:06:41 windserver server[805]: Exception in thread > "pool-21-thread-1" > java.awt.image.RasterFormatException: (parentX + width) is outside raster > ene 13 09:06:41 windserver server[805]: at java.awt.image.WritableRaster. > createWritableChild(WritableRaster.java:228) > ene 13 09:06:41 windserver server[805]: at java.awt.image.BufferedImage. > getSubimage(BufferedImage.java:1202) > ene 13 09:06:41 windserver server[805]: at org.geotools.gce.imagemosaic. > jdbc.ImageDecoderThread.run(ImageDecoderThread.java:150) > ene 13 09:06:41 windserver server[805]: at java.util.concurrent. > ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) > ene 13 09:06:41 windserver server[805]: at java.util.concurrent. > ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) > ene 13 09:06:41 windserver server[805]: at java.lang.Thread.run(Thread. > java:745) > > and looking at the source it doesn't look good to me: > > diff --git a/modules/plugin/imagemosaic-jdbc/src/main/java/org/ > geotools/gce/imagemosaic/jdbc/ImageDecoderThread.java > b/modules/plugin/imagemosaic-jdbc/src/main/java/org/ > geotools/gce/imagemosaic/jdbc/ImageDecoderThread.java > index ff55c89..b45368f 100644 > --- a/modules/plugin/imagemosaic-jdbc/src/main/java/org/ > geotools/gce/imagemosaic/jdbc/ImageDecoderThread.java > +++ b/modules/plugin/imagemosaic-jdbc/src/main/java/org/ > geotools/gce/imagemosaic/jdbc/ImageDecoderThread.java > @@ -135,8 +135,8 @@ public class ImageDecoderThread extends AbstractThread > { > .getMinimum(0)) > / scaleX)); > int y = (int) (Math > - .round((savedTileEnvelope.getMaximum(1) - tileEnvelope > - .getMaximum(1)) > + .round((savedTileEnvelope.getMinimum(1) - tileEnvelope > + .getMinimum(1)) > / scaleY)); > int width = (int) (Math.round(bufferedImage.getWidth() > / savedTileEnvelope.getSpan(0) > > Could you please check it out? > -- Developer Access Program for Intel Xeon Phi Processors Access to Intel Xeon Phi processor-based developer platforms. With one year of Intel Parallel Studio XE. Training and support from Colfax. Order your platform today. http://sdm.link/xeonphi___ GeoTools-GT2-Users mailing list GeoTools-GT2-Users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users