From: Jonathan M. <jon...@wa...> - 2013-07-31 16:44:26
|
Hi Martin, Ah, ok. Well there's definitely not supposed to be points in that layer. I think that happened because my automated data-cleaner cleaned an area feature to such an extent it became a point. I'll have to add an extra check in the future. The solution for me here is simple - delete that entire row. :-) It may be worth updating the JIRA with this. Save someone else having to figure it out when they get around to fixing it. :-) Many thanks again to both, Jonathan On 31 July 2013 17:36, Martin Davis <mtn...@gm...> wrote: > Now we're getting somewhere. Good sleuthing, Jonathan. > > The "probably_bad" geometry is indeed different. It is a COLLECTION > containing a POLYGON and a POINT. (This is shown by the GTYPE of 2004 and > the ELEMINFO contents: > > > MDSYS.SDO_GEOMETRY(2004,27700,NULL,MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,1,393,1,1) > > Now, I think that the actual Oracle geometry is correct. It reads fine > with the (recently reworked) JTS OraReader class. So I suspect that this > is uncovering a bug in the GeoTools SDO.java class (which is a bit, um, > convoluted). > > So you have two options: > > - fix the geometry (which does seem like it is probably a data anomaly) > - wait until a fix can be created for the GeoTools code (which at least > there is now a test case for - but it will take a braver man than me to > wade into that codebase again). > > > > > On Wed, Jul 31, 2013 at 3:39 AM, Jonathan Moules < > jon...@wa...> wrote: > >> Hi Both, >> >> I've done a little analysis of the data. I don't actually know what the >> error means, but as one number is double the other I figured it was >> coordinate pairs. As such I counted the number of commas (not manually ;-) >> ). >> >> I've updated the jira - http://jira.codehaus.org/browse/GEOS-5941 - I've >> placed what I think is guilty line in probably_bad.txt. >> >> Of course, my supposition about what the error means may be completely >> wrong. >> ==== >> >> I've also confirmed that this only seems to happen for this one tile in >> my dataset. >> >> That's pretty much as much as I can do given my inability to debug >> GeoServer itself. Hopefully it'll get one of you two closer though. >> >> Jonathan >> >> >> On 31 July 2013 06:18, Martin Davis <mtn...@gm...> wrote: >> >>> That was my thought too. But the sample data that was supplied all >>> looks fine. It's all LINESTRINGS, whereas the error trace seems to >>> indicate that the GeometryConverter thought it was parsing a COLLECTION >>> containing a POINT. >>> >>> It might be nice to add some DEBUG level logging to the SDO.java class >>> to dump out the input SDO GEOMETRY when a bad parse error is encountered. >>> This could even be done as a temporary hack to try and capture what's >>> going wrong in this case. >>> >>> >>> On Mon, Jul 29, 2013 at 12:44 PM, Jody Garnett <jod...@gm...>wrote: >>> >>>> If you can narrow it down to the geometry that is causing failure we >>>> may be able to create a test case. >>>> >>>> -- >>>> Jody Garnett >>>> >>>> On 30/07/2013, at 3:00 AM, Martin Davis <mtn...@gm...> wrote: >>>> >>>> Right - http://jira.codehaus.org/browse/GEOS-5941 >>>> >>>> As you say, the data looks fine. "Fraid I have no idea at the moment >>>> about what might be going wrong. >>>> >>>> >>>> On Mon, Jul 29, 2013 at 4:08 AM, Jonathan Moules < >>>> jon...@wa...> wrote: >>>> >>>>> HI Martin, >>>>> I wouldn't know where to start in setting up a debug instance of >>>>> GeoServer. Nor can I narrow down exactly what the problem line is based on >>>>> that error. >>>>> >>>>> But I can run the SQL query from that file which gives me 327 results. >>>>> >>>>> The data quality seems ok. It doesn't fail Oracle Validation >>>>> (SDO_GEOM.VALIDATE_GEOMETRY_WITH_CONTEXT), and it went through some FME >>>>> cleaning/validation before loading too. >>>>> >>>>> I've opened a JIRA and attached the results of the SQL query so they >>>>> can be tested and hopefully replicate the issue. >>>>> >>>>> Regards, >>>>> Jonathan >>>>> >>>>> >>>>> On 26 July 2013 17:53, Martin Davis <mtn...@gm...> wrote: >>>>> >>>>>> This may be due to either a bug in the GeoTools Oracle-Geometry >>>>>> converter, or to a problem with your data. The GT Oracle Geometry >>>>>> converter is fairly complex code, and has had issues in the past, so that's >>>>>> the first place I'd look. >>>>>> >>>>>> The best way to determine what's happening is to set up a debug >>>>>> instance of GeoServer and trap the error right at the line it's happening. >>>>>> Failing that, if you can isolate the record causing the problem, and then >>>>>> post the Oracle SDO GEOMETRY representation of the data it should be >>>>>> possible to reproduce this in the GeometryConverter directly. >>>>>> >>>>>> >>>>>> On Tue, Jul 23, 2013 at 1:48 AM, Jonathan Moules < >>>>>> jon...@wa...> wrote: >>>>>> >>>>>>> Hi List, >>>>>>> For some reason my GeoServer has started to throw up an error when >>>>>>> I try and render one (or may more) of the layers. Can anyone advise what >>>>>>> the problem is. >>>>>>> >>>>>>> The exact numbers of the offset and length in the error vary. >>>>>>> >>>>>>> Thanks, >>>>>>> Jonathan >>>>>>> >>>>>>> >>>>>>> 2013-07-23 08:38:54,603 DEBUG [org.geotools.rendering] - Processing >>>>>>> 1 stylers for >>>>>>> http://www.warwickshire.gov.uk/public_data_db:OS_VMD_BUILDING >>>>>>> 2013-07-23 08:38:54,603 DEBUG [org.geotools.rendering] - creating >>>>>>> rules for scale denominator - 20,000 >>>>>>> 2013-07-23 08:38:54,603 DEBUG [org.geotools.rendering] - Expanding >>>>>>> rendering area by 2 pixels to consider stroke width >>>>>>> 2013-07-23 08:38:54,603 DEBUG [org.geotools.rendering] - Querying >>>>>>> layer http://www.warwickshire.gov.uk/public_data_db:OS_VMD_BUILDINGwith bbox: ReferencedEnvelope[458740.8 : 464497.6, 258036.79999999996 : >>>>>>> 263793.6] >>>>>>> 2013-07-23 08:38:54,603 DEBUG [org.geotools.jdbc] - CREATE CONNECTION >>>>>>> 2013-07-23 08:38:54,603 TRACE [org.geotools.core] - ENTRY 4 >>>>>>> 2013-07-23 08:38:54,603 DEBUG [org.geotools.filter] - exporting >>>>>>> PropertyName >>>>>>> 2013-07-23 08:38:54,603 DEBUG [org.geotools.jdbc] - SELECT >>>>>>> SDO_GEOMETRY as SDO_GEOMETRY FROM OSMM.OS_VMD_BUILDING WHERE >>>>>>> SDO_FILTER(SDO_GEOMETRY, ?, 'mask=anyinteract querytype=WINDOW') = 'TRUE' >>>>>>> 2013-07-23 08:38:54,618 DEBUG [org.geotools.data.oracle.sdo] - Using >>>>>>> layer SRID: 27700 >>>>>>> 2013-07-23 08:38:54,618 DEBUG [org.geotools.jdbc] - Setting >>>>>>> parameter 1 as >>>>>>> MDSYS.SDO_GEOMETRY(2003,27700,NULL,MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,3),MDSYS.SDO_ORDINATE_ARRAY(458740.8,258036.79999999996,464497.6,263793.6)) >>>>>>> 2013-07-23 08:38:54,618 DEBUG [org.geotools.jdbc] - 1 = POLYGON >>>>>>> ((458740.8 258036.79999999996, 458740.8 263793.6, 464497.6 263793.6, >>>>>>> 464497.6 258036.79999999996, 458740.8 258036.79999999996)) >>>>>>> 2013-07-23 08:38:54,665 ERROR [org.geotools.rendering] - ELEM_INFO >>>>>>> STARTING_OFFSET 393 inconsistent with ORDINATES length 197 >>>>>>> java.lang.IllegalArgumentException: ELEM_INFO STARTING_OFFSET 393 >>>>>>> inconsistent with ORDINATES length 197 >>>>>>> at org.geotools.data.oracle.sdo.SDO.createPoint(SDO.java:2463) >>>>>>> at org.geotools.data.oracle.sdo.SDO.createCollection(SDO.java:3000) >>>>>>> at org.geotools.data.oracle.sdo.SDO.create(SDO.java:2429) >>>>>>> at org.geotools.data.oracle.sdo.SDO.create(SDO.java:2383) >>>>>>> at >>>>>>> org.geotools.data.oracle.sdo.GeometryConverter.asGeometry(GeometryConverter.java:125) >>>>>>> at >>>>>>> org.geotools.data.oracle.OracleDialect.readGeometry(OracleDialect.java:506) >>>>>>> at >>>>>>> org.geotools.data.oracle.OracleDialect.readGeometry(OracleDialect.java:492) >>>>>>> at >>>>>>> org.geotools.data.oracle.OracleDialect.decodeGeometryValue(OracleDialect.java:455) >>>>>>> at >>>>>>> org.geotools.jdbc.JDBCFeatureReader.next(JDBCFeatureReader.java:310) >>>>>>> at >>>>>>> org.geotools.jdbc.JDBCFeatureReader.next(JDBCFeatureReader.java:70) >>>>>>> at >>>>>>> org.geotools.data.store.ContentFeatureCollection$WrappingFeatureIterator.next(ContentFeatureCollection.java:145) >>>>>>> at >>>>>>> org.geotools.data.store.ContentFeatureCollection$WrappingFeatureIterator.next(ContentFeatureCollection.java:125) >>>>>>> at >>>>>>> org.geotools.feature.collection.BridgeIterator.next(BridgeIterator.java:31) >>>>>>> at >>>>>>> org.geotools.feature.collection.BridgeIterator.next(BridgeIterator.java:18) >>>>>>> at >>>>>>> org.geotools.renderer.lite.StreamingRenderer.drawPlain(StreamingRenderer.java:2494) >>>>>>> at >>>>>>> org.geotools.renderer.lite.StreamingRenderer.processStylers(StreamingRenderer.java:2045) >>>>>>> at >>>>>>> org.geotools.renderer.lite.StreamingRenderer.paint(StreamingRenderer.java:829) >>>>>>> at >>>>>>> org.geoserver.wms.map.RenderedImageMapOutputFormat.produceMap(RenderedImageMapOutputFormat.java:491) >>>>>>> at >>>>>>> org.geoserver.wms.map.RenderedImageMapOutputFormat.produceMap(RenderedImageMapOutputFormat.java:255) >>>>>>> at >>>>>>> org.geoserver.wms.map.RenderedImageMapOutputFormat.produceMap(RenderedImageMapOutputFormat.java:127) >>>>>>> at org.geoserver.wms.GetMap.executeInternal(GetMap.java:466) >>>>>>> at org.geoserver.wms.GetMap.run(GetMap.java:201) >>>>>>> at org.geoserver.wms.GetMap.run(GetMap.java:111) >>>>>>> at >>>>>>> org.geoserver.wms.DefaultWebMapService.getMap(DefaultWebMapService.java:356) >>>>>>> at sun.reflect.GeneratedMethodAccessor250.invoke(Unknown Source) >>>>>>> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) >>>>>>> at java.lang.reflect.Method.invoke(Unknown Source) >>>>>>> at >>>>>>> org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:318) >>>>>>> at >>>>>>> org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183) >>>>>>> at >>>>>>> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150) >>>>>>> at >>>>>>> org.geoserver.gwc.wms.CacheSeedingWebMapService.invoke(CacheSeedingWebMapService.java:61) >>>>>>> at >>>>>>> org.geoserver.gwc.wms.CacheSeedingWebMapService.invoke(CacheSeedingWebMapService.java:35) >>>>>>> at >>>>>>> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) >>>>>>> at >>>>>>> org.geoserver.gwc.wms.CachingWebMapService.invoke(CachingWebMapService.java:73) >>>>>>> at >>>>>>> org.geoserver.gwc.wms.CachingWebMapService.invoke(CachingWebMapService.java:54) >>>>>>> at >>>>>>> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) >>>>>>> at >>>>>>> org.geoserver.ows.util.RequestObjectLogger.invoke(RequestObjectLogger.java:54) >>>>>>> at >>>>>>> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) >>>>>>> at >>>>>>> org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202) >>>>>>> at com.sun.proxy.$Proxy24.getMap(Unknown Source) >>>>>>> at sun.reflect.GeneratedMethodAccessor260.invoke(Unknown Source) >>>>>>> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) >>>>>>> at java.lang.reflect.Method.invoke(Unknown Source) >>>>>>> at org.geoserver.ows.Dispatcher.execute(Dispatcher.java:774) >>>>>>> at >>>>>>> org.geoserver.ows.Dispatcher.handleRequestInternal(Dispatcher.java:272) >>>>>>> at >>>>>>> org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153) >>>>>>> at org.geoserver.gwc.GWC.dispatchOwsRequest(GWC.java:1122) >>>>>>> at >>>>>>> org.geoserver.gwc.layer.GeoServerTileLayer.dispatchGetMap(GeoServerTileLayer.java:552) >>>>>>> at >>>>>>> org.geoserver.gwc.layer.GeoServerTileLayer.getMetatilingReponse(GeoServerTileLayer.java:497) >>>>>>> at >>>>>>> org.geoserver.gwc.layer.GeoServerTileLayer.seedTile(GeoServerTileLayer.java:691) >>>>>>> at org.geowebcache.seed.SeedTask.doActionInternal(SeedTask.java:136) >>>>>>> at org.geowebcache.seed.GWCTask.doAction(GWCTask.java:76) >>>>>>> at org.geowebcache.seed.MTSeeder.call(MTSeeder.java:36) >>>>>>> at org.geowebcache.seed.MTSeeder.call(MTSeeder.java:25) >>>>>>> at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) >>>>>>> at java.util.concurrent.FutureTask.run(Unknown Source) >>>>>>> at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown >>>>>>> Source) >>>>>>> at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown >>>>>>> Source) >>>>>>> at java.lang.Thread.run(Unknown Source) >>>>>>> >>>>>>> This transmission is intended for the named addressee(s) only and >>>>>>> may contain sensitive or protectively marked material up to RESTRICTED and >>>>>>> should be handled accordingly. Unless you are the named addressee (or >>>>>>> authorised to receive it for the addressee) you may not copy or use it, or >>>>>>> disclose it to anyone else. If you have received this transmission in error >>>>>>> please notify the sender immediately. All email traffic sent to or from us, >>>>>>> including without limitation all GCSX traffic, may be subject to recording >>>>>>> and/or monitoring in accordance with relevant legislation. >>>>>>> >>>>>>> ------------------------------------------------------------------------------ >>>>>>> See everything from the browser to the database with AppDynamics >>>>>>> Get end-to-end visibility with application monitoring from >>>>>>> AppDynamics >>>>>>> Isolate bottlenecks and diagnose root cause in seconds. >>>>>>> Start your free trial of AppDynamics Pro today! >>>>>>> >>>>>>> http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk >>>>>>> _______________________________________________ >>>>>>> Geoserver-users mailing list >>>>>>> Geo...@li... >>>>>>> https://lists.sourceforge.net/lists/listinfo/geoserver-users >>>>>>> >>>>>>> >>>>>> >>>>> >>>>> This transmission is intended for the named addressee(s) only and may >>>>> contain sensitive or protectively marked material up to RESTRICTED and >>>>> should be handled accordingly. Unless you are the named addressee (or >>>>> authorised to receive it for the addressee) you may not copy or use it, or >>>>> disclose it to anyone else. If you have received this transmission in error >>>>> please notify the sender immediately. All email traffic sent to or from us, >>>>> including without limitation all GCSX traffic, may be subject to recording >>>>> and/or monitoring in accordance with relevant legislation. >>>>> >>>> >>>> >>>> ------------------------------------------------------------------------------ >>>> Get your SQL database under version control now! >>>> Version control is standard for application code, but databases havent >>>> caught up. So what steps can you take to put your SQL databases under >>>> version control? Why should you start doing it? Read more to find out. >>>> >>>> http://pubads.g.doubleclick.net/gampad/clk?id=49501711&iu=/4140/ostg.clktrk >>>> >>>> _______________________________________________ >>>> Geoserver-users mailing list >>>> Geo...@li... >>>> https://lists.sourceforge.net/lists/listinfo/geoserver-users >>>> >>>> >>> >> >> This transmission is intended for the named addressee(s) only and may >> contain sensitive or protectively marked material up to RESTRICTED and >> should be handled accordingly. Unless you are the named addressee (or >> authorised to receive it for the addressee) you may not copy or use it, or >> disclose it to anyone else. If you have received this transmission in error >> please notify the sender immediately. All email traffic sent to or from us, >> including without limitation all GCSX traffic, may be subject to recording >> and/or monitoring in accordance with relevant legislation. >> > > -- This transmission is intended for the named addressee(s) only and may contain sensitive or protectively marked material up to RESTRICTED and should be handled accordingly. Unless you are the named addressee (or authorised to receive it for the addressee) you may not copy or use it, or disclose it to anyone else. If you have received this transmission in error please notify the sender immediately. All email traffic sent to or from us, including without limitation all GCSX traffic, may be subject to recording and/or monitoring in accordance with relevant legislation. |