Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Printemps des cartes 2024

#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.

 

Pied de page des forums

Powered by FluxBB