Création d'une nouvelle table à critères multiples

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

Création d'une nouvelle table à critères multiples

MaudC
Bonjour,

J'utilise Corine Land Cover 2006 et souhaite créer une nouvelle table à partir de celle ci en ne sélectionnant que les zones forestières. Cela correspond aux zones 3.1.1  et 3.1.2 et 3.1.3. Ma requête SQL est donc la suivante :

CREATE TABLE forest as SELECT * FROM CLC06_RGF where CODE_06='312' and CODE_06='313' and CODE_06='311';

La table se crée bien, mais est dépourvu de toute donnée attributaire. Quand je crée la table avec une seule condition cela fonctionne bien.  Y a-t-il une erreur dans ma requête ?

Sinon existe-il d'autres données SIG disponibles librement sur les forêts en France ?

Cordialement,

Maud
Reply | Threaded
Open this post in threaded view
|

Re: Création d'une nouvelle table à critères multiples

Gwendall Petit
Administrator
Maud !!!!

Regardes bien ta requête.
Tu demandes à sélectionner les objets qui répondent à trois questions à la fois --> l'objet A qui pour le champ CODE_06 à la valeur 312 et aussi 313 et aussi 311 --> ça n'est pas possible !

Il faut simplement que tu remplaces la condition AND par OR :
CREATE TABLE forest as SELECT * FROM CLC06_RGF where CODE_06='312' OR CODE_06='313' OR CODE_06='311';
Pour les données libres sur les forêts je ne sais pas trop. Peut-être du côté de l'IGN qui a fusionné avec l'IFN depuis quelques temps maintenant ?

Cordialement,

Gwendall
Reply | Threaded
Open this post in threaded view
|

Re: Création d'une nouvelle table à critères multiples

MaudC
Oups ! En effet  Je viens de saisir la différence entre les deux, merci !

J'ai en effet trouvé des données brutes disponibles sur le site de l'IGN de l'inventaire forestier. Les données ne sont ni au format vecteur ni raster mais j'ai les coordonnées x et y en Lambert 93 dans un tableau. Existe il une manipulation pour géoréférencer ces données ?

Merci
Reply | Threaded
Open this post in threaded view
|

Re: Création d'une nouvelle table à critères multiples

MaudC
J'essaye de la sorte :

CREATE TABLE FOREST as select ST_MakePoint(StringToDouble(xl93),StringToDouble(yl93)) as the_geom from Foret2011;

Mais j'obtiens le message d'erreur suivant :

Lancer linstruction {0}/{1} :
create table FOREST as select ST_MakePoint(StringToDouble(xl93),StringToDouble(yl93)) as the_geom from Foret2011;
ERROR [Thread-17] (ExecuteScriptProcess.java:200) - Erreur sémantique SQL
org.gdms.sql.engine.SemanticException: Unknown function: 'StringToDouble'.
        at org.gdms.sql.engine.step.functions.FunctionsStep$.org$gdms$sql$engine$step$functions$FunctionsStep$$markFunctions(FunctionsStep.scala:130)
        at org.gdms.sql.engine.step.functions.FunctionsStep$$anonfun$org$gdms$sql$engine$step$functions$FunctionsStep$$markFunctions$1.apply(FunctionsStep.scala:135)
        at org.gdms.sql.engine.step.functions.FunctionsStep$$anonfun$org$gdms$sql$engine$step$functions$FunctionsStep$$markFunctions$1.apply(FunctionsStep.scala:135)
        at scala.collection.Iterator$class.foreach(Iterator.scala:772)
        at scala.collection.LinearSeqLike$$anon$1.foreach(LinearSeqLike.scala:50)
        at scala.collection.IterableLike$class.foreach(IterableLike.scala:73)
        at org.gdms.sql.evaluator.Expression.foreach(Expressions.scala:52)
        at org.gdms.sql.engine.step.functions.FunctionsStep$.org$gdms$sql$engine$step$functions$FunctionsStep$$markFunctions(FunctionsStep.scala:135)
        at org.gdms.sql.engine.step.functions.FunctionsStep$$anonfun$markFunctions$1$$anonfun$apply$2.apply(FunctionsStep.scala:114)
        at org.gdms.sql.engine.step.functions.FunctionsStep$$anonfun$markFunctions$1$$anonfun$apply$2.apply(FunctionsStep.scala:114)
        at scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59)
        at scala.collection.immutable.List.foreach(List.scala:76)
        at org.gdms.sql.engine.step.functions.FunctionsStep$$anonfun$markFunctions$1.apply(FunctionsStep.scala:114)
        at org.gdms.sql.engine.step.functions.FunctionsStep$$anonfun$markFunctions$1.apply(FunctionsStep.scala:99)
        at scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59)
        at scala.collection.immutable.List.foreach(List.scala:76)
        at org.gdms.sql.engine.step.functions.FunctionsStep$.markFunctions(FunctionsStep.scala:99)
        at org.gdms.sql.engine.step.functions.FunctionsStep$.doOperation(FunctionsStep.scala:60)
        at org.gdms.sql.engine.step.functions.FunctionsStep$.doOperation(FunctionsStep.scala:57)
        at org.gdms.sql.engine.AbstractEngineStep.$greater$eq$colon(EngineStep.scala:62)
        at org.gdms.sql.engine.EngineStep$$anon$1.doOperation(EngineStep.scala:46)
        at org.gdms.sql.engine.EngineStep$class.$greater$eq$colon(EngineStep.scala:41)
        at org.gdms.sql.engine.EngineStep$$anon$1.$greater$eq$colon(EngineStep.scala:44)
        at org.gdms.sql.engine.SQLStatement.prepare(SQLStatement.scala:160)
        at org.orbisgis.view.sqlconsole.actions.ExecuteScriptProcess.run(ExecuteScriptProcess.java:118)
        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(Unknown Source)

Cordialement,

Maud
Reply | Threaded
Open this post in threaded view
|

Re: Création d'une nouvelle table à critères multiples

Gwendall Petit
Administrator
Oui les fonctions de conversion (cast en anglais) ont changé avec la V4.0. Avant nous avions des fonctions "maison" et maintenant nous sommes plus proche de la syntaxe "standard".

Ainsi pour convertir une type vers un autre, tu dois utiliser ::
Ci-dessous un exemple :
SELECT *, my_field_double :: integer AS my_field_integer FROM my_table;
Dans ton cas, tu aurais alors quelque chose comme suit :
CREATE TABLE FOREST AS SELECT ST_MakePoint(xl93 :: double, yl93 :: double) AS the_geom FROM Foret2011;
Cordialement,

Gwendall
Reply | Threaded
Open this post in threaded view
|

Re: Création d'une nouvelle table à critères multiples

MaudC
Bonjour,

Ok merci beaucoup cela fonctionne bien.

Bonne journée,

Maud