Changement d'un code SQL de la version 2 pour Bracelona

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

Changement d'un code SQL de la version 2 pour Bracelona

Vera
Bonjour,

J'ai pris la version du code SQL développée pour la version 2, pour le calcul de la variable af (version utilisée par Magdalena Maché). Après avec l'adaptation faite par Carina d'un autre code J'essayé d'écrire le code pour calculer af pour la nouvelle version. Par contre, J'ai un souci. Au final, Je dois avoir un tableau avec 31 colonnes. Le problème est que pour chaque id de bâtiment dans une colonne Je dois avoir des valeurs différents de la variable af et ils sont les mêmes partout. C'est à dire que ma variable varie à chaque colonne, mais dans la même colonne elle est la même partout.    

Je pense qu'il peut avoir quelques problèmes dans la conversion du code:

Je vous cite le code présenté dans le rapport de stage de Mathieu:

SQL("Alter table gE4000 add column af0 numeric; ");
SQL("Update gE4000 set af0=0; ");
SQL("Create table gE5 as gE4000 union gE3; ");
SQL("Create table af01 as select gid, max(af0) as af0 from gE5 group by gid; ");
SQL("Create table af1 as select a.the_geom, b.* from mailles as a, af01 as b where a.gid=b.gid; ");


Dans la conversion du code pour la version Barcelone J'ai:

SQL("Alter table gE4000 add column af0 double;  ");
SQL("Update gE4000 set af0=0;  ");
SQL("Create table gE5 as select * from gE4000 union select * from gE3; ");
SQL("Create table af01 as select gid, max(af0) as af0 from gE5 group by gid; ");

1. Est-ce que la passage de "numeric" pour "double" peux poser des soucis?
2. Est-ce la façon de faire les union est similaire ou pas?

Après Je vous montre mon boucle "for" parce que Je pense qu'il peuvent être aussi responsable pour ce soucis:

Vector vect=new Vector();
for(int i=0;i<27;i++){
vect.addElement(i);

}
vect.addElement(27.48);
vect.addElement(29.59);
vect.addElement(32.49);
vect.addElement(36.42);
vect.addElement(41.64);


CODE
CODE
CODE


int n=vect.size();
for (int i=1; i<n-1; i++){

j=vect.elementAt(i);

z=i+1;
jj=vect.elementAt(z);


Nomaf1="af"+z;
Nomaf01="af"+i;
NomEafv1="af"+z;
NomEafv01="af"+i;
float diff=jj-j;


SQL("Create table iE08 as select *, l_seg*("+diff+") as sf from iE07 where HAUTEUR>=("+jj+"); ");
SQL("Create table iE09 as select *, l_seg*(HAUTEUR-("+j+")) as sf from iE07 where HAUTEUR<("+jj+")  and HAUTEUR>("+j+");");
SQL("Create table iE10 as select * from iE08 union select * from iE09; ");

SQL("Create table gE177 as select gid, sum(sf) as sf from iE10 group by gid;");

SQL("Create table i03 as select gid, aire_int*("+diff+") as volbat from i01_rotate where HAUTEUR>=("+jj+");");
SQL("Create table i04 as select gid, aire_int*(HAUTEUR-("+j+"))  as volbat from i01_rotate where HAUTEUR<("+jj+") and HAUTEUR>("+j+");");

SQL("Create table i05 as select * from i04 union select * from i03; ");
SQL("Create table ig1 as select gid, sum(volbat) as volbat from i05 group by gid; ");

SQL("Create table gE211 as select a.gid, a.sf, b.volbat from gE177 as a, ig1 as b where a.gid=b.gid; ");

SQL("Create table gE2001 as select a.gid, a.sf /( b.dXdY*("+diff+") -a.volbat) as "+Nomaf1+"  from gE211 as a, Surface as b where a.gid=b.gid and (b.dXdY*("+diff+")-a.volbat)<>0;  ");
SQL("Create table gE2000 as select gid from gE211; ");
SQL("Alter table gE2000 add column "+Nomaf1+" double; ");
SQL("Update gE2000 set "+Nomaf1+" =0; ");

SQL("Create table gE2003 as select * from gE2000 union select * from gE2001; ");
SQL("Create table gE2 as select max("+Nomaf1+") as "+Nomaf1+", avg(gid) as gid from gE2003 group by gid; ");

SQL("Create table gE3 as select a.the_geom, a.gid, b."+Nomaf1+" from mailles as a, gE2 as b where a.gid=b.gid; ");


SQL("Create table gE415 as select * from mailles; ");
SQL("Alter table gE415 add column "+Nomaf1+" double; ");
SQL("Update gE415 set "+Nomaf1+" =0; ");


SQL("Create table gE5 as select * from gE415 union select * from gE3; ");
SQL("Create table gE6 as select gid, max("+Nomaf1+") as "+Nomaf1+"  from gE5 group by gid; ");

SQL("Create table "+NomEafv1+"  as select a.*, b. "+Nomaf1+"  from "+NomEafv01+"  as a, gE6 as b where a.gid=b.gid; ");







SQL("Drop table "+NomEafv01+"  ; ");




for (int i=vect.size()-1; 0<=i; i--) {
vect.remove(i);

}


Si vous pouvez me donner des pistes pour résoudre ce problème, Je vous remercie beaucoup!

Cordialement,
Vera
Reply | Threaded
Open this post in threaded view
|

Re: Changement d'un code SQL de la version 2 pour Bracelona

Gwendall Petit
Administrator
Bonjour Vera,

Peux-tu nous préciser à quelle version d'OrbisGIS le rapport de Mathieu fait référence ? C'était sur la V2.2.0 ?

Vera wrote
Je pense qu'il peut avoir quelques problèmes dans la conversion du code:

Je vous cite le code présenté dans le rapport de stage de Mathieu:

SQL("Alter table gE4000 add column af0 numeric; ");
SQL("Update gE4000 set af0=0; ");
SQL("Create table gE5 as gE4000 union gE3; ");
SQL("Create table af01 as select gid, max(af0) as af0 from gE5 group by gid; ");
SQL("Create table af1 as select a.the_geom, b.* from mailles as a, af01 as b where a.gid=b.gid; ");

Dans la conversion du code pour la version Barcelone J'ai:

SQL("Alter table gE4000 add column af0 double;  ");
SQL("Update gE4000 set af0=0;  ");
SQL("Create table gE5 as select * from gE4000 union select * from gE3; ");
SQL("Create table af01 as select gid, max(af0) as af0 from gE5 group by gid; ");

1. Est-ce que la passage de "numeric" pour "double" peux poser des soucis?
2. Est-ce la façon de faire les union est similaire ou pas?
Je ne pense pas que l'utilisation du "double" génère un problème. De plus l'utilisation de l'union semble correcte... si on part du principe que gE4000 et gE3 ont exactement la même structure de table (même nom, même ordre et même type de champ)

As-tu un message d'erreur ?

Cordialement,

Gwendall
Reply | Threaded
Open this post in threaded view
|

Re: Changement d'un code SQL de la version 2 pour Bracelona

Vera
Bonjour,

La version est bien la 2.2.0.

Je n'ai pas de tout des messages d'error. Le code tourne bien et généré le tableau final.

Vera
Reply | Threaded
Open this post in threaded view
|

Re: Changement d'un code SQL de la version 2 pour Bracelona

R_Tavares
In reply to this post by Gwendall Petit
Bonjour Gwendall et Vera,

Si le code c'était developée sur la V2.2.0, et je vais utiliser sur la V4.0 (La Rochelle), je devrais faire des changements dans le code ? A ce moment le resultat c'est egal das touts les batiments, et ça n'est pas le vrais resultat.

Merci
Reply | Threaded
Open this post in threaded view
|

Re: Changement d'un code SQL de la version 2 pour Bracelona

ebocher
Administrator
Dear all,

Could you please explain your problem in english ? It will be more easier to understand.

cheers

Erwan
Reply | Threaded
Open this post in threaded view
|

Re: Changement d'un code SQL de la version 2 pour Bracelona

R_Tavares
Dear Erwan,

Sorry for this exchange of messages. The main issue problem is the following:

we are trying to use the code (developed in V2.0) that Vera posted in orbisgis V4.0 version. Even running, the results are quite strange, since for each grid cell (with buildings) gives the same value, even it is supposed not to. We think that one of the major constrains is the 'union' function, but it must be any difference on the Do cycle commands (that could be changed between orbisgis version)

Taking this into account, is it possible to help us cheking the code, particularly the SQL commands?

Thanks in advance,

Richard
Reply | Threaded
Open this post in threaded view
|

Re: Changement d'un code SQL de la version 2 pour Bracelona

ebocher
Administrator
Dear Richard,

We will investigate your problem next week. Currently we are busy due to the OrbisGIS formation.

Erwan
Reply | Threaded
Open this post in threaded view
|

Re: Changement d'un code SQL de la version 2 pour Bracelona

R_Tavares
Dear Erwan,

Have you checked the code? Do you have any recommendation or correction?

Thanks,

Richard