erreur d'accès à la donnée

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

erreur d'accès à la donnée

KatiaC
Bonjour,

j'essaie de faire une intersection entre 2 tables, mais j'obtiens une erreur que je ne comprends pas. J'ai déjà eu ce type d'erreur: il y avait un problème sur la géométrie d'une des tables. J'ai donc essayé de les nettoyer avec la condition where st_isvalid(the_geom), mais rien n'y fait...
Avez-vous une idée?

Merci de votre aide.

Katia


Lancer l'instruction 1/1 :
create table surf_tve_PS as SELECT st_intersection(a.the_geom,b.the_geom) as the_geom, a.gid, a.surf_bati, a.vege from vege_bati_surf a, GG_lim b where st_intersects(a.the_geom,b.the_geom);
ERROR [Thread-82] (ExecuteScriptProcess.java:198) - Erreur d'accès à la donnée :
org.gdms.driver.DriverException: java.lang.IllegalArgumentException: This method does not support GeometryCollection arguments
        at org.gdms.sql.engine.SQLStatement.execute(SQLStatement.scala:186)
        at org.orbisgis.view.sqlconsole.actions.ExecuteScriptProcess.run(ExecuteScriptProcess.java:173)
        at org.orbisgis.view.background.Job.run(Job.java:74)
        at org.orbisgis.view.background.RunnableBackgroundJob.run(RunnableBackgroundJob.java:71)
        at java.lang.Thread.run(Thread.java:724)
Caused by: java.lang.IllegalArgumentException: This method does not support GeometryCollection arguments
        at com.vividsolutions.jts.geom.Geometry.checkNotGeometryCollection(Geometry.java:1782)
        at com.vividsolutions.jts.geom.Geometry.relate(Geometry.java:1033)
        at com.vividsolutions.jts.geom.Geometry.intersects(Geometry.java:787)
        at org.gdms.sql.function.spatial.geometry.predicates.ST_Intersects.evaluateResult(ST_Intersects.java:54)
        at org.gdms.sql.function.spatial.geometry.predicates.AbstractSpatialPredicateFunction.evaluate(AbstractSpatialPredicateFunction.java:57)
        at org.gdms.sql.evaluator.FunctionEvaluator$$anonfun$eval$1.apply(FunctionEvaluator.scala:48)
        at org.gdms.sql.evaluator.FunctionEvaluator$$anonfun$eval$1.apply(FunctionEvaluator.scala:48)
        at org.gdms.sql.evaluator.Expression.evaluate(Expressions.scala:59)
        at org.gdms.sql.engine.commands.join.SpatialIndexedJoinCommand.org$gdms$sql$engine$commands$join$SpatialIndexedJoinCommand$$filter(SpatialIndexedJoinCommand.scala:96)
        at org.gdms.sql.engine.commands.join.SpatialIndexedJoinCommand$$anonfun$doWork$1$$anonfun$apply$1.apply(SpatialIndexedJoinCommand.scala:77)
        at org.gdms.sql.engine.commands.join.SpatialIndexedJoinCommand$$anonfun$doWork$1$$anonfun$apply$1.apply(SpatialIndexedJoinCommand.scala:77)
        at scala.collection.Iterator$$anon$21.hasNext(Iterator.scala:440)
        at scala.collection.Iterator$$anon$21.hasNext(Iterator.scala:440)
        at scala.collection.Iterator$$anon$19.hasNext(Iterator.scala:400)
        at scala.collection.Iterator$class.foreach(Iterator.scala:772)
        at scala.collection.Iterator$$anon$19.foreach(Iterator.scala:399)
        at org.gdms.sql.engine.commands.QueryOutputCommand$$anonfun$doWork$2.apply(QueryOutputCommand.scala:69)
        at org.gdms.sql.engine.commands.QueryOutputCommand$$anonfun$doWork$2.apply(QueryOutputCommand.scala:69)
        at scala.collection.Iterator$class.foreach(Iterator.scala:772)
        at scala.collection.immutable.StreamIterator.foreach(Stream.scala:933)
        at org.gdms.sql.engine.commands.QueryOutputCommand.doWork(QueryOutputCommand.scala:69)
        at org.gdms.sql.engine.commands.Command.execute(Command.scala:66)
        at org.gdms.sql.engine.commands.CreateTableCommand$$anonfun$execute$1.apply(CreateTableCommand.scala:78)
        at org.gdms.sql.engine.commands.CreateTableCommand$$anonfun$execute$1.apply(CreateTableCommand.scala:78)
        at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:233)
        at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:233)
        at scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59)
        at scala.collection.immutable.List.foreach(List.scala:76)
        at scala.collection.TraversableLike$class.map(TraversableLike.scala:233)
        at scala.collection.immutable.List.map(List.scala:76)
        at org.gdms.sql.engine.commands.CreateTableCommand.execute(CreateTableCommand.scala:78)
        at org.gdms.sql.engine.SQLStatement.execute(SQLStatement.scala:184)
Reply | Threaded
Open this post in threaded view
|

Re: erreur d'accès à la donnée

agouge
Bonjour Katia,

La fonction ST_Intersects n'accepte pas de collection de géometrie (MULTIPOINT, MULTILINESTRING, MULTIPOLYGON, GEOMETRYCOLLECTION).

Il faudra utiliser d'abord la fonction ST_Explode.

Ça sera plus clair dans la documentation de H2GIS: http://www.h2gis.org/docs/dev/ST_Intersects/

Cordialement,
Adam


On Wed, Mar 12, 2014 at 10:16 AM, KatiaC [via OrbisGIS] <[hidden email]> wrote:
Bonjour,

j'essaie de faire une intersection entre 2 tables, mais j'obtiens une erreur que je ne comprends pas. J'ai déjà eu ce type d'erreur: il y avait un problème sur la géométrie d'une des tables. J'ai donc essayé de les nettoyer avec la condition where st_isvalid(the_geom), mais rien n'y fait...
Avez-vous une idée?

Merci de votre aide.

Katia


Lancer l'instruction 1/1 :
create table surf_tve_PS as SELECT st_intersection(a.the_geom,b.the_geom) as the_geom, a.gid, a.surf_bati, a.vege from vege_bati_surf a, GG_lim b where st_intersects(a.the_geom,b.the_geom);
ERROR [Thread-82] (ExecuteScriptProcess.java:198) - Erreur d'accès à la donnée :
org.gdms.driver.DriverException: java.lang.IllegalArgumentException: This method does not support GeometryCollection arguments
        at org.gdms.sql.engine.SQLStatement.execute(SQLStatement.scala:186)
        at org.orbisgis.view.sqlconsole.actions.ExecuteScriptProcess.run(ExecuteScriptProcess.java:173)
        at org.orbisgis.view.background.Job.run(Job.java:74)
        at org.orbisgis.view.background.RunnableBackgroundJob.run(RunnableBackgroundJob.java:71)
        at java.lang.Thread.run(Thread.java:724)
Caused by: java.lang.IllegalArgumentException: This method does not support GeometryCollection arguments
        at com.vividsolutions.jts.geom.Geometry.checkNotGeometryCollection(Geometry.java:1782)
        at com.vividsolutions.jts.geom.Geometry.relate(Geometry.java:1033)
        at com.vividsolutions.jts.geom.Geometry.intersects(Geometry.java:787)
        at org.gdms.sql.function.spatial.geometry.predicates.ST_Intersects.evaluateResult(ST_Intersects.java:54)
        at org.gdms.sql.function.spatial.geometry.predicates.AbstractSpatialPredicateFunction.evaluate(AbstractSpatialPredicateFunction.java:57)
        at org.gdms.sql.evaluator.FunctionEvaluator$$anonfun$eval$1.apply(FunctionEvaluator.scala:48)
        at org.gdms.sql.evaluator.FunctionEvaluator$$anonfun$eval$1.apply(FunctionEvaluator.scala:48)
        at org.gdms.sql.evaluator.Expression.evaluate(Expressions.scala:59)
        at org.gdms.sql.engine.commands.join.SpatialIndexedJoinCommand.org$gdms$sql$engine$commands$join$SpatialIndexedJoinCommand$$filter(SpatialIndexedJoinCommand.scala:96)
        at org.gdms.sql.engine.commands.join.SpatialIndexedJoinCommand$$anonfun$doWork$1$$anonfun$apply$1.apply(SpatialIndexedJoinCommand.scala:77)
        at org.gdms.sql.engine.commands.join.SpatialIndexedJoinCommand$$anonfun$doWork$1$$anonfun$apply$1.apply(SpatialIndexedJoinCommand.scala:77)
        at scala.collection.Iterator$$anon$21.hasNext(Iterator.scala:440)
        at scala.collection.Iterator$$anon$21.hasNext(Iterator.scala:440)
        at scala.collection.Iterator$$anon$19.hasNext(Iterator.scala:400)
        at scala.collection.Iterator$class.foreach(Iterator.scala:772)
        at scala.collection.Iterator$$anon$19.foreach(Iterator.scala:399)
        at org.gdms.sql.engine.commands.QueryOutputCommand$$anonfun$doWork$2.apply(QueryOutputCommand.scala:69)
        at org.gdms.sql.engine.commands.QueryOutputCommand$$anonfun$doWork$2.apply(QueryOutputCommand.scala:69)
        at scala.collection.Iterator$class.foreach(Iterator.scala:772)
        at scala.collection.immutable.StreamIterator.foreach(Stream.scala:933)
        at org.gdms.sql.engine.commands.QueryOutputCommand.doWork(QueryOutputCommand.scala:69)
        at org.gdms.sql.engine.commands.Command.execute(Command.scala:66)
        at org.gdms.sql.engine.commands.CreateTableCommand$$anonfun$execute$1.apply(CreateTableCommand.scala:78)
        at org.gdms.sql.engine.commands.CreateTableCommand$$anonfun$execute$1.apply(CreateTableCommand.scala:78)
        at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:233)
        at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:233)
        at scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59)
        at scala.collection.immutable.List.foreach(List.scala:76)
        at scala.collection.TraversableLike$class.map(TraversableLike.scala:233)
        at scala.collection.immutable.List.map(List.scala:76)
        at org.gdms.sql.engine.commands.CreateTableCommand.execute(CreateTableCommand.scala:78)
        at org.gdms.sql.engine.SQLStatement.execute(SQLStatement.scala:184)


If you reply to this email, your message will be added to the discussion below:
http://orbisgis.3871844.n2.nabble.com/erreur-d-acces-a-la-donnee-tp7575067.html
To start a new topic under OrbisGIS Users, email [hidden email]
To unsubscribe from OrbisGIS, click here.
NAML

Reply | Threaded
Open this post in threaded view
|

Re: erreur d'accès à la donnée

KatiaC
In reply to this post by KatiaC
Euh... encore une fois désolée.. J'ai trouvé l'erreur: il fallait que je passe par la commande st_explode d'une des tables pour pouvoir faire l'intersection...
Reply | Threaded
Open this post in threaded view
|

Re: erreur d'accès à la donnée

KatiaC
Merci Adam pour ta réactivité...
désolée, je n'avais pas vu ton message.