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.
Pour créer une nouvelle requête, appuyez sur Créer une 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é.
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, appuyez sur Créer un groupe. 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 . 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 nouvelle 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. 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.
Les formulaires sont utilisés dans JMap pour les requêtes par attributs afin de saisir les paramètres de recherche, pour la saisie des données attributaires des couches éditables et pour la gestion de données stockées dans des bases de données, toujours en relation avec les éléments d’une couche.
L’administrateur JMap conçoit les formulaires à l’aide du designer de formulaires et les utilisateurs peuvent ensuite les utiliser dans les applications JMap Pro, Web, NG et Survey.
Tout comme les formulaires d’édition de données, les formulaires utilisés pour les requêtes par attributs sont créés en utilisant le designer de formulaires. Ces formulaires sont utilisés par les utilisateurs pour saisir les paramètres des requêtes. Chaque composante du formulaire est donc associée à un paramètre de la requête ($param1
, $param2
, etc.).
Contrairement aux autres types de formulaires, ils ne peuvent pas être divisés en sections. Aussi, les composantes Photo ne sont pas disponibles pour ce type de formulaires.
Ces formulaires sont créés lors de la configuration des requêtes par attributs, en appuyant sur Disposition du formulaire.
Lors de la création d’un formulaire de requête par attributs, il est important de tenir compte des paramètres qui sont requis et de ceux qui sont optionnels dans la définition de la requête. Par exemple, si une composante du formulaire n’a pas l’option Requis d’activée, la requête doit prévoir que le paramètre en question est optionnel. Consultez Créer une nouvelle requête par attributs pour plus d’information sur les paramètres optionnels dans les requêtes.