orbisgis / geoclimate

Geospatial processing toolbox for environmental and climate studies
GNU Lesser General Public License v3.0
59 stars 16 forks source link

bbox method with osm - error with some osm area #831

Closed 4estone closed 11 months ago

4estone commented 1 year ago

I got an error with some osm area: org.h2.jdbc.JdbcSQLNonTransientException: Exception calling user-defined function: "isIntersects(POLYGON ((397305.80943215144 5386150.943562587, 396103.1827536502 5386173.02680501, 396130.7149644342 5386172.521244559, 396124.7816434132 5386202.943967919, 396158.8063624049 5386205.5182009395, 396166.20444152807 5386171.86956874, 397305.8094321515 5386150.943562587, 397305.80943215144 5386150.943562587)), LINESTRING (397305.8094321512 5386150.943562587, 397330.4604832208 5386177.054921296, 397364.81327721715 5386206.95001788, 397370.79658117826 5386211.655432628, 397437.9141796233 5386264.470224335, 397494.68455172563 5386311.025233857, 397531.22710871935 5386344.272717424, 397541.96284038934 5386356.964194194, 397613.52594039676 5386499.09732679, 397633.1576107189 5386527.538452748, 397680.7794862332 5386579.15409073, 397769.13470350136 5386673.394056145, 397801.15467050613 5386701.766275525, 397896.62079578 5386781.079483856, 397920.6853564896 5386804.126179417)): side location conflict [ (397305.8094321512, 5386150.943562587, NaN) ]"; SQL statement: DROP TABLE IF EXISTS roadInter_42530f8b_0305_4512_a010_542460c8d77b [90105-214] at org.h2.message.DbException.getJdbcSQLException(DbException.java:554) at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) at org.h2.message.DbException.get(DbException.java:212) at org.h2.message.DbException.convertInvocation(DbException.java:424) at org.h2.schema.FunctionAlias$JavaMethod.execute(FunctionAlias.java:508) at org.h2.schema.FunctionAlias$JavaMethod.getValue(FunctionAlias.java:345) at org.h2.expression.function.JavaFunction.getValue(JavaFunction.java:40) at org.h2.expression.condition.ConditionAndOrN.getValue(ConditionAndOrN.java:128) at org.h2.expression.Expression.getBooleanValue(Expression.java:332) at org.h2.command.query.Select.isConditionMet(Select.java:449) at org.h2.command.query.Select$LazyResultQueryFlat.fetchNextRow(Select.java:1835) at org.h2.result.LazyResult.hasNext(LazyResult.java:78) at org.h2.result.FetchedResult.next(FetchedResult.java:34) at org.h2.command.query.Select.queryFlat(Select.java:728) at org.h2.command.query.Select.queryWithoutCache(Select.java:833) at org.h2.command.query.Query.queryWithoutCacheLazyCheck(Query.java:197) at org.h2.command.query.Query.query(Query.java:512) at org.h2.command.dml.Insert.insertRows(Insert.java:197) at org.h2.command.dml.Insert.update(Insert.java:135) at org.h2.command.dml.DataChangeStatement.update(DataChangeStatement.java:74) at org.h2.command.ddl.CreateTable.update(CreateTable.java:175) at org.h2.command.CommandContainer.update(CommandContainer.java:169) at org.h2.command.CommandList.executeRemaining(CommandList.java:58) at org.h2.command.CommandList.update(CommandList.java:66) at org.h2.command.Command.executeUpdate(Command.java:252) at org.h2.jdbc.JdbcPreparedStatement.executeUpdateInternal(JdbcPreparedStatement.java:209) at org.h2.jdbc.JdbcPreparedStatement.executeUpdate(JdbcPreparedStatement.java:169) at org.h2.jdbc.JdbcCallableStatement.executeUpdate(JdbcCallableStatement.java:96) at groovy.sql.Sql.call(Sql.java:3068) at groovy.sql.Sql.call(Sql.java:3014) at groovy.sql.Sql$call$0.call(Unknown Source) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:139) at org.orbisgis.geoclimate.geoindicators.RsuIndicators.linearRoadOperations(RsuIndicators.groovy:976) at org.orbisgis.geoclimate.geoindicators.RsuIndicators$linearRoadOperations$2.call(Unknown Source) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125) at org.orbisgis.geoclimate.geoindicators.WorkflowGeoIndicators.computeRSUIndicators(WorkflowGeoIndicators.groovy:609) at org.orbisgis.geoclimate.geoindicators.WorkflowGeoIndicators$computeRSUIndicators$4.callCurrent(Unknown Source) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:51) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:171) at org.orbisgis.geoclimate.geoindicators.WorkflowGeoIndicators.computeGeoclimateIndicators(WorkflowGeoIndicators.groovy:1529) at org.orbisgis.geoclimate.geoindicators.WorkflowGeoIndicators$computeGeoclimateIndicators$1.callCurrent(Unknown Source) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:51) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:171) at org.orbisgis.geoclimate.geoindicators.WorkflowGeoIndicators.estimateBuildingHeight(WorkflowGeoIndicators.groovy:1390) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) at java.base/java.lang.reflect.Method.invoke(Method.java:578) at org.codehaus.groovy.runtime.callsite.PlainObjectMetaMethodSite.doInvoke(PlainObjectMetaMethodSite.java:43) at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrap.invoke(PogoMetaMethodSite.java:182) at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:61) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:51) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:171) at org.orbisgis.geoclimate.geoindicators.WorkflowGeoIndicators.computeAllGeoIndicators(WorkflowGeoIndicators.groovy:1228) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) at java.base/java.lang.reflect.Method.invoke(Method.java:578) at org.codehaus.groovy.runtime.callsite.PlainObjectMetaMethodSite.doInvoke(PlainObjectMetaMethodSite.java:43) at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrap.invoke(PogoMetaMethodSite.java:182) at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.call(PogoMetaMethodSite.java:73) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125) at org.orbisgis.geoclimate.osm.WorkflowOSM$_osm_processing_closure2.doCall(WorkflowOSM.groovy:530) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) at java.base/java.lang.reflect.Method.invoke(Method.java:578) at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:107) at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323) at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:274) at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1035) at groovy.lang.Closure.call(Closure.java:412) at groovy.lang.Closure.call(Closure.java:428) at org.codehaus.groovy.runtime.DefaultGroovyMethods.each(DefaultGroovyMethods.java:2359) at org.codehaus.groovy.runtime.DefaultGroovyMethods.each(DefaultGroovyMethods.java:2344) at org.codehaus.groovy.runtime.DefaultGroovyMethods.each(DefaultGroovyMethods.java:2397) at org.codehaus.groovy.runtime.dgm$204.invoke(Unknown Source) at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoMetaMethodSiteNoUnwrapNoCoerce.invoke(PojoMetaMethodSite.java:247) at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:56) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:139) at org.orbisgis.geoclimate.osm.WorkflowOSM.osm_processing(WorkflowOSM.groovy:412) at org.orbisgis.geoclimate.osm.WorkflowOSM$osm_processing$1.callCurrent(Unknown Source) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:51) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:171) at org.orbisgis.geoclimate.osm.WorkflowOSM.workflow(WorkflowOSM.groovy:361) at org.orbisgis.geoclimate.osm.WorkflowOSM$workflow.call(Unknown Source) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:139) at org.orbisgis.geoclimate.Geoclimate.call(Geoclimate.groovy:93) at org.orbisgis.geoclimate.Geoclimate.call(Geoclimate.groovy) at picocli.CommandLine.executeUserObject(CommandLine.java:1953) at picocli.CommandLine.access$1300(CommandLine.java:145) at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2358) at picocli.CommandLine$RunLast.handle(CommandLine.java:2352) at picocli.CommandLine$RunLast.handle(CommandLine.java:2314) at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2179) at picocli.CommandLine$RunLast.execute(CommandLine.java:2316) at picocli.CommandLine.execute(CommandLine.java:2078) at picocli.CommandLine$execute.call(Unknown Source) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:139) at org.orbisgis.geoclimate.Geoclimate.main(Geoclimate.groovy:133) Caused by: org.locationtech.jts.geom.TopologyException: side location conflict [ (397305.8094321512, 5386150.943562587, NaN) ] at org.locationtech.jts.geomgraph.EdgeEndStar.propagateSideLabels(EdgeEndStar.java:289) at org.locationtech.jts.geomgraph.EdgeEndStar.computeLabelling(EdgeEndStar.java:125) at org.locationtech.jts.operation.relate.RelateComputer.labelNodeEdges(RelateComputer.java:325) at org.locationtech.jts.operation.relate.RelateComputer.computeIM(RelateComputer.java:125) at org.locationtech.jts.operation.relate.RelateOp.getIntersectionMatrix(RelateOp.java:109) at org.locationtech.jts.operation.relate.RelateOp.relate(RelateOp.java:54) at org.locationtech.jts.geom.Geometry.relate(Geometry.java:1035) at org.locationtech.jts.geom.Geometry.intersects(Geometry.java:767) at org.h2gis.functions.spatial.predicates.ST_Intersects.isIntersects(ST_Intersects.java:60) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) at java.base/java.lang.reflect.Method.invoke(Method.java:578) at org.h2.schema.FunctionAlias$JavaMethod.execute(FunctionAlias.java:495) ... 99 more

Params used: { "description": "Processing OSM data", "input": { "locations": [ [ 48.61999335430278, 7.576817745721901, 48.654825190910934, 7.619437513843222 ] ] }, "output": { "folder": "D:\\temp\\lcz\\orbisgis" }, "parameters": { "rsu_indicators": { "indicatorUse": [ "LCZ", "TEB", "URBAN_TYPOLOGY" ], "svfSimplified": true, "estimateHeight": true } } }

ebocher commented 11 months ago

Thanks. It's related to an invalid RSU. A simple way to fix it is to apply a negative buffer. I will fix it.

geoms

ebocher commented 11 months ago

This is now the result.

geoms