Requêtes par attributs
<< Click to Display Table of Contents >> Navigation: Projets > Requêtes par attributs |
Les requêtes par attributs permettent de rechercher et de sélectionner des éléments d'une couche de la carte en utilisant les valeurs de leurs attributs, ou en utilisant une base de données liée à la couche. Dans JMap Admin, les administrateurs JMap créent les requêtes ainsi que les formulaires qui leurs sont associés. Les utilisateurs JMap utilisent ensuite ces formulaires pour saisir des valeurs d'attributs pour faire la recherche. Tous les éléments dont les valeurs d'attributs correspondent aux valeurs saisies sont alors sélectionnés ou présentés dans l'explorateur d'éléments.
Vous pouvez accéder à la section de configuration de requêtes en appuyant sur Requêtes depuis la section Projets.
Créer une nouvelle requête par attributs
Pour créer une nouvelle requête, appuyez sur Créer une requête requête depuis la section Requêtes par attributs. Cela ouvrira l'interface de configuration de requêtes. Les paramètres varient selon le type de requête sélectionné.
Requête par attributs |
|
Titre |
Entrez un titre pour la requête. Les utilisateurs verront ce titre dans la liste des requêtes. |
Couche |
Sélectionnez la couche sur laquelle la requête sera exécutée. Une plage de recherche facilite la sélection de la couche. |
Échelle maximale |
Entrez l'échelle maximale utilisée pour l'affichage des résultats sur la carte. Ceci est utile afin d'éviter des zooms trop rapprochés sur les résultats. |
Max. valeurs retournées |
Entrez le nombre maximal d'éléments pouvant être retournés par la requête. La requête refusera de s'exécuter si la taille du résultat est supérieure à cette limite. Ceci est utilisé afin d'éviter l'exécution de requêtes trop longues qui pourraient ralentir le système. |
Type de requête |
Sur la couche : Avec ce type de requête, la recherche s'effectue uniquement sur les attributs de la couche. C'est le type de requête le plus simple. Externe : Avec ce type de requête, la recherche s'effectue dans une base de données externe qui possède un champ faisant le lien avec un attribut de la couche. Ce type de requête est plus complexe à paramétrer mais offre plus de flexibilité pour les recherches. |
Requêtes sur la couche
Requêtes sur la couche |
|
WHERE |
Clause WHERE de la requête SQL exécutée pour faire la recherche. C'est ici que sont définis tous les critères de recherche. Typiquement, cette clause contient des paramètres numérotés ($param1, $param2, etc.) qui seront remplacés par les valeurs entrées par l'utilisateur dans le formulaire. Exemples : COUNTRY='$param1' Sélectionne les éléments de la couche qui ont la valeur de l'attribut COUNTRY égale à la valeur saisie par l'utilisateur. La valeur de l'attribut doit correspondre parfaitement à la valeur saisie ($param1). lower(COUNTRY) like lower('$param1%') Sélectionne les éléments de la couche qui ont la valeur de l'attribut COUNTRY similaire à la valeur saisie par l'utilisateur. La valeur de l'attribut doit débuter par la valeur saisie ($param1). Grâce à l'opérateur lower, la recherche n'est pas sensible à la casse. POP2000>=$param1 and POP2000<$param2 Sélectionne les éléments de la couche qui ont la valeur de l'attribut POP2000 à l'intérieur de la plage définie par les deux valeurs saisies ($param1 et $param2). |
Disposition du formulaire |
Appuyez sur ce bouton pour configurer le formulaire de la requête. Consultez la section Formulaires pour plus d'information à ce sujet. |
Requêtes externes
Ce type de requête est utilisé lorsque la recherche doit se faire dans des données contenues dans une base de données externe. La base de données externe doit contenir un champ permettant de faire le lien avec un attribut de la couche. Une requête SQL de type SELECT est d'abord exécutée dans la base de données externe et les valeurs retournées sont ensuite associées aux éléments de la couche en utilisant le champ de liaison.
Requêtes externe |
|
Base de données |
Sélectionnez la base de données dans laquelle vous voulez effectuer la requête. |
Requête SQL |
Entrez la requête SQL qui sera exécutée dans la base de données pour rechercher les éléments. Exemple : select * from cities where CITY_LANGUAGE='$param1' Recherche dans la base de données sélectionnée plus haut, dans la table cities. Retourne tous les champs des enregistrements qui ont la valeur du champ CITY_LANGUAGE égale à la valeur saisie par l'utilisateur ($param1). |
Attribut de la couche |
Parmi les attributs de la couches, spécifiez celui qui sert à faire le lien avec la base de données. |
Champ |
Parmi les champs retournés par la requête SQL, spécifiez celui qui sert à faire le lien avec la couche. |
Disposition du formulaire |
Appuyez sur ce bouton pour configurer le formulaire de la requête. Consultez la section Formulaires pour plus d'information à ce sujet. |
Paramètres requis et optionnels
Bien que ce soit dans la conception du formulaire de recherche que les champs sont marqués requis ou optionnels, la clause WHERE de la requête doit être ajustée afin de supporter cette option. Pour ce faire, toute partie de la requête qui est associée à des paramètres optionnels doit être incluse à l'intérieur d'une paire d'accolades ( { } ).
Exemple de clause WHERE :
CITY = '$param1' AND { COUNTRY = '$param2' }
Cet exemple fait la recherche des villes qui ont la valeur de leur attribut CITY égale à la valeur du paramètre 1 ($param1) saisie par l'utilisateur et qui, optionnellement, ont la valeur de leur attribut COUNTRY égale à la valeur du paramètre 2 ($param2) saisie par l'utilisateur. Si le paramètre 2 est non-renseigné, tout le bloc { COUNTRY = '$param2' } est enlevé de la requête ainsi que l'opérateur and devenu orphelin. Notez que l'administrateur doit absolument définir $param2 comme optionnel lors de la conception du formulaire. Consultez la sections Formulaires pour plus d'information sur la conception des formulaires.
Valeurs multiples pour un même paramètre
Des valeurs multiples peuvent être saisis avec un champ de type Liste (choix multiples) dans les formulaires. Les valeurs sont séparées par le caractère délimiteur ; (point-virgule). C'est dans la clause WHERE de la requête que cette option peut être activée. La syntaxe est la suivante :
$multiple{true} {$delimiter{;}}
Exemple :
CITY = '$param1{$multiple{true} $delimiter{;}}'
Recherche les villes qui ont la valeur de leur attribut CITY égale à une des valeurs saisies dans le paramètre 1. Les valeurs sont séparées par des points-virgule.
Gestion des requêtes par attributs
Les requêtes par attributs peuvent être modifiées par les administrateurs. À partir de JMap Dakar, lorsque les requêtes d'un projet sont modifiées, les applications qui diffusent le projet ne nécessitent pas d'être redéployées car les changements se reflètent de manière directe.
Suppression des requêtes par attributs
La suppression d'une requête par attributs supprime définitivement la requête et le formulaire qui lui est associé. Pour supprimer une requête, sélectionnez-la dans la liste et appuyez sur Supprimer.
Organisation des requêtes par attributs
Les requêtes par attributs peuvent être groupées. Ceci est particulièrement utile pour les projets qui comportent un nombre élevé de requêtes.
Pour créer un nouveau groupe, appuyez sur le bouton Créer un groupe. Pour modifier l'ordre des groupes, appuyez sur le bouton Modifier et sélectionnez Réorganiser les groupes. La fenêtre qui s'affiche permet de glisser-déposer les groupes afin d'en modifier l'ordre. Pour renommer une groupe, appuyez sur . Pour supprimer un groupe, sélectionnez-le dans la liste et appuyez sur Supprimer.