Requêtes de sélection par attributs
Dernière mise à jour
Dernière mise à jour
K2 Geospatial 2024
Les requêtes de sélection par attributs permettent 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 et présentés dans l’explorateur d’éléments.
L'onglet Requêtes de l'interface de configuration d'un projet vous permet de configurer les requêtes du projet.
L'onglet Requêtes s'affiche lorsque le projet contient au moins une couche.
Cet onglet présente un tableau qui affiche les groupes de requêtes. Le groupe Défaut est le groupe par défaut. Le tableau indique le nombre de requêtes que contient chaque groupe. La section Organisation des requêtes offre les détails sur les groupes.
Pour créer une nouvelle requête vous devez vous positionner dans un groupe de l'onglet Requêtes. Le bouton Créer une requête s'affiche et vous pouvez donc ouvrir l’interface de configuration de requêtes.
Les paramètres varient selon le type de requête sélectionné.
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.
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 devenu orphelin. Notez que l’administrateur doit absolument définir $param2
comme optionnel lors de la conception du formulaire. Consultez la section Formulaires pour plus d’information sur la conception des formulaires.
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). Cette option peut être activée dans la clause WHERE de la requête. 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 point-virgule.
Les requêtes par attributs peuvent être modifiées par les administrateurs. 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.
Les requêtes 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, dans l'onglet Requêtes appuyez sur Créer un groupe.
Pour supprimer un groupe, sélectionnez-le dans la liste et appuyez sur Supprimer.
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.
Une fois une requête créée, elle est publiée automatiquement. Vous pouvez cependant annuler cette publication pour rendre la requête non disponible dans les applications tout en conservant sa configuration. Pour annuler la publication d’une requête, décochez la case Publiée de la requête dans l’interface de gestion des requêtes.
Lorsque un projet contient des couches par référence, les requêtes configurées sur ces couches dans le projet qui contient les couches originales sont disponibles automatiquement dans le projet. Le projet “hérite” de ces requêtes.
Vous ne pouvez pas modifier ces requêtes “par référence” à partir du projet, elles peuvent être modifiées seulement dans le projet qui contient la couche originale.
Si vous souhaitez modifier une requête “par référence”, créez une copie de la requête en appuyant sur Dupliquer. L’interface de configuration affiche les paramètres de la requête que vous pouvez modifier.
Une fois la nouvelle requête configurée, vous devez décocher la case Publiée de la requête “héritée” de la couche par référence pour qu’elle ne soit plus disponible dans les applications JMap qui utilisent la couche par référence.
Vous pouvez aussi créer une nouvelle requête sur une couche par référence, tel que décrit dans la section Créer une requête par attributs.
Pour modifier l’ordre des groupes, appuyez sur 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 un groupe, appuyez sur .
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. Vous pouvez sélectionner une couche par référence pour créer la requête.
É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.
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 case.
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.
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 couche, 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.