#1 Tue 19 October 2004 18:59
- Jean Touveli
- Invité
Query a layer ??
De: Jean TOUVELI
Bonjour,
Je bute sur un probleme au niveau de l'interrogation de mes couches:
J'ai mis un :
TEMPLATE ttt_query.html
dans l'objet CLASS de chacune de mes couches, mais seule la premiere layer est queryable ??!! Que pasa ?? Quelle est l'exacte procedure pour rendre une layer queryable ?
En plus la fiche d'information me ressort l'ensemble des champs du fichier.dbf, comment faut il faire pour selectionner les champs qui doivent etre affiche ?
Serait ce ce dans l'objet METADATA ?
Merci pour vos eclairages et salutations a tous.
Jean
#2 Wed 20 October 2004 12:19
- Bluecarto
- Invité
Re: Query a layer ??
Il est peut-etre necessaire de preciser que vous utilisez mapserver ce qui n'est
pas evident au premier abord et ce qui n'est pas l'objet principal de cette
liste.
Ensuite, il faut savoir que l'objet TEMPLATE est necessaire pour rendre la
couche queriable. Mais cet objet, si je ne me trompe pas, appartient a l'objet
LAYER et non a l'objet CLASS.
Si vous utilisez php_mapscript pour votre application, alors dans la fonction
queryByPoint, il faut preciser que vous souhaitez un mode MS_MULTIPLE, qui vous
permettra d'attaquer les couches a tous les niveaux et pas seulement celle qui
est dessus.
D'autre part, pour obtenir les resultats correspondants a des champs
attributaires en particuliers, il faut utiliser l'objet HEADER. Jetez un oeil
dans la documentation de reference du mapfile !
Enfin, si vous n'etes pas rebutes pas l'anglais, il est certainement preferable
et plus efficace de poser ces questions directement sur la liste Mapserver.
Cordialement.
Pierre GIRAUD
camptocamp.com
#3 Wed 20 October 2004 17:55
- Fx Gamoy
- Invité
Re: Query a layer ??
Bonjoru,
Pour qu'une couche soit interrogable, il faut que le champs template soit
non nul.
On peut mettre Template TOTO dans la definition du layer si l'on exploite
pas le gestionaire de template.
Pour obtenir les informations contenues dans un objet (objet isole
par un queryByPoint par ex), il suffit d'exploiter les informations
contenues dans l'objet .
->value renvoie un array() qui contient chaque info.
et chaque valeur peut etre lue par un echo ->value[ COL1 ];
Bon courage
fx gamoy
geomatika.fr
#4 Fri 29 October 2004 08:47
- Si Geo
- Invité
Re: Query a layer ??
De: Gilles
Bonjour,
Voici le code - a integrer dans query.phtml - pour faire le tri dans les attributs a afficher :
Premierement : on commente ce bout de code :
/* CODE ORIGINAL
// loop and use key for titles
foreach ( as => )
{
.= .. n ;
}
.= n ;
// loop through the results and format each row
foreach ( as )
{
// add a row for each
.= n ;
// loop and add a cell for each result
foreach ( as )
{
.= . . n ;
}
.= n ;
} */
À la suite de ce code, on integre celui-ci :
// Utilisation de pour les intitules de champs : on ajoute ici seulement le nom des champs que l'on veut voir
foreach ( as => )
{
if (strcasecmp(, REFERENCEC ) == REFERENCE ||
strcasecmp(, SURFACEPAR ) == SURFACE en m² )
.= .. n ;
}
.= n ;
// On formate les colonnes pour chaque resultat
foreach ( as )
{
// on ajoute une colonne pour chaque resultat
.= n ;
// on ajoute ici seulement le nom des champs que l'on ne veut pas voir
foreach ( as => )
{
if (strcasecmp(, FID ) == 0 ||
strcasecmp(, GID ) == 0 ||
strcasecmp(, NUM ) == 0 ||
strcasecmp(, TYPE ) == 0 ||
strcasecmp(, IDENT ) == 0 ||
strcasecmp(, PARCELLEBA ) == 0 ||
strcasecmp(, QUALITEIND ) == 0 ||
strcasecmp(, CATEGORIEI ) == 0 ||
strcasecmp(, NOMINDIVID ) == 0 ||
strcasecmp(, PRENOMINDI ) == 0 ||
strcasecmp(, NUMEROVOIE ) == 0 ||
strcasecmp(, TYPEVOIEIN ) == 0 ||
strcasecmp(, LIBELLEVOI ) == 0 ||
strcasecmp(, COMPLEMENT ) == 0 ||
strcasecmp(, CODEPOSTAL ) == 0 ||
strcasecmp(, COMMUNEIND ) == 0)
continue;
.= .. n ;
}
.= n ;
}
// on ferme la table
.= n ;
.= n ;
.= n ;
}
else
{
// WMS ou pas ?
if ( substr( , 0, 26 ) == No results found for layer )
array_push( , );
else
{
= count( );
[0] = ;
[1] = ;
}
}
// end loop of layers
}
return ;
}
À bientot.