Filtrer des entités à l’aide d’ensembles de définition

Lorsque vous ajoutez un jeu de données à une carte ou une scène en tant que couche, vous souhaitez parfois l’utiliser et afficher un sous-ensemble des entités du jeu de données. Voici quelques exemples :

  • Dans un jeu de données de villes du monde, utiliser uniquement celles comportant plus d’un million d’habitants
  • Dans un jeu de données de lignes hydrologiques, utiliser uniquement les cours d’eau permanents
  • Dans un jeu de données de parcelles, utiliser uniquement celles qui sont en zone commerciale

Les ensembles de définition permettent de définir un sous-ensemble d’entités d’une couche avec lesquelles travailler en filtrant les entités extraites du jeu de données par la couche. Cela signifie qu’un ensemble de définition affecte non seulement le dessin, mais également sur les entités qui apparaissent dans la table attributaire de la couche, qui peuvent être sélectionnées, étiquetées, identifiées et traitées par les outils de géotraitement.

Si vous voulez restreindre les entités dessinées, mais conserver toutes les entités des requêtes et traitement, envisagez d’utiliser des filtres d’affichage. Les ensembles de définition et les filtres d’affichage peuvent être utilisés ensemble sur une couche, mais les ensembles de définition restreignent les entités disponibles dans la couche, alors que les filtres d’affichage limitent uniquement celles qui sont affichées.

Les ensembles de définition sont formés d’une ou de plusieurs clauses. Rédigés en langage SQL, ils sont construits dans le générateur de requêtes. Reportez-vous à la rubrique Introduction aux expressions de requête pour en savoir plus sur l’utilisation des clauses et des requêtes ainsi que sur l’enregistrement et le téléchargement des requêtes à partir de fichiers.

Plusieurs ensembles de définition peuvent être associés à une couche, mais un seul peut être actif à un moment donné. Même si plusieurs ensembles de définition existent pour une couche, ils peuvent tous être inactifs ; aucun ensemble n’est alors appliqué.

Remarque :

Cette rubrique décrit l’utilisation d’ensembles de définition sur une couche d’entités, mais ils peuvent être utilisés de la même manière sur des tables autonomes.

Créer un ensemble de définition pour une couche

Pour créer un ensemble de définition sur une couche, procédez comme suit :

  1. Assurez-vous qu’une couche est sélectionnée dans la fenêtre Contents (Contenu).
  2. Dans l’ensemble d’onglets Feature Layer (Couche d’entités), cliquez sur l’onglet Data (Données).
  3. Dans l’onglet Data (Données), dans le groupe Definition Query (Ensemble de définition), cliquez sur le bouton Build Definition Query (Créer un ensemble de définition) Lanceur pour ouvrir la boîte de dialogue Layer Properties (Propriétés de la couche) avec l’onglet Definition Query (Ensemble de définition).
  4. Cliquez sur le bouton New definition query (Nouvel ensemble de définitions) ou sur le menu déroulant associé pour créer une requête en mode clause ou en mode SQL ou pour créer un fichier d’expression de la requête (.exp).
  5. Choisissez parmi les valeurs des menus pour élaborer la clause. Ces menus et leurs valeurs sont propres aux données source sous-jacentes.
  6. Éventuellement, cliquez sur Add Clause (Ajouter une clause) Ajouter une nouvelle clause pour ajouter une clause à la requête. Sélectionnez les valeurs requises dans les menus de la nouvelle clause. Répétez cette étape pour ajouter des clauses supplémentaires, si nécessaire.
  7. Éventuellement, cliquez sur Field settings (Paramètres des champs) Paramètrespour modifier l’affichage des valeurs des champs. Ces paramètres sont appliqués à toutes les clauses.
    • L’option Show field aliases (Afficher les alias de champs) est sélectionnée par défaut. Cliquez sur Show field names (Afficher les noms de champs) pour inclure le nom de la table dans le menu déroulant du champ de clause. Ceci est particulièrement utile si votre couche fait partie d’une jointure ou partage des noms de champs communs.
    • Cliquez sur Sort Ascending (Tri croissant) ou sur Sort Descending (Tri décroissant) pour afficher les noms de champs par ordre alphabétique dans le menu déroulant. Cliquez sur Original order (Ordre initial) pour rétablir l’ordre par défaut des champs.
    • L’option Show visible fields (Afficher les champs visibles) est sélectionnée par défaut. Cliquez sur Afficher tous les champs pour afficher les champs masqués dans le menu déroulant du champ de clause.
  8. Vous pouvez éventuellement placer le pointeur sur le nom de l’ensemble et cliquer dessus pour le renommer.
  9. Vous pouvez éventuellement cliquer sur Verify the SQL expression is valid (Vérifier que l’expression SQL est valide) Vérifier que l’expression SQL est valide pour vérifier la requête.
  10. Pour valider et finaliser l’ensemble, cliquez sur Apply (Appliquer).
  11. S’il s’agit du seul ensemble de définition de la couche, il devient l’ensemble de définition actif et il est appliqué immédiatement. S’il existe d’autres ensembles de définition sur la couche, cliquez sur Set as Active (Définir comme actif) Définir comme actif pour appliquer un ensemble de définition à la couche.

Définir l’ensemble de définition actif

Vous pouvez définir plus d’un ensemble de définition pour une couche ou une table et passer de l’un à l’autre. Un seul ensemble de définition est actif à la fois, sinon aucun ensemble n’est actif. Les ensembles de définition sont stockés en tant que propriétés de la couche.

Pour passer d’un ensemble de définition actif à un autre, procédez comme suit :

  1. Assurez-vous qu’une couche est sélectionnée dans la fenêtre Contents (Contenu).
  2. Dans l’ensemble d’onglets Feature Layer (Couche d’entités), cliquez sur l’onglet Data (Données).
  3. Dans l’onglet Data (Données), dans le groupe Definition Query (Ensemble de définition), choisissez un ensemble dans le menu Definition Query (Ensemble de définition) pour l’appliquer à la couche.
  4. Il est possible également de définir l’ensemble actif dans la boîte de dialogue Layer Properties (Propriétés de la couche).
    • Cliquez sur Set as Active (Définir comme actif) Définir comme actif pour appliquer cette requête à la couche. Tout autre ensemble devient inactif. L’ensemble actif se trouve en bas de la boîte de dialogue Properties (Propriété). Si la liste comporte un grand nombre d’ensembles et que l’ensemble actif n’est pas visible, cliquez sur Show the active definition query (Afficher l’ensemble de définition actif) Afficher l’ensemble de définition actif pour faire défiler la liste jusqu’à lui.
    • Cliquez sur Clear active query (Effacer la requête active) Effacer la requête active pour n’appliquer aucune requête à la couche ou la table. Toutes les requêtes sont conservées par la couche ou la table, mais aucune d’entre elles n’est effectivement appliquée.

Conseil :

Vous pouvez filtrer la liste de couches dans la fenêtre Contents (Contenu) pour afficher uniquement les couches avec un ensemble de définition actif.

Modifier des requêtes existantes

Avec la couche sélectionnée dans la fenêtre Contents (Contenu), dans l’ensemble d’onglets Feature Layer (Couche d’entités), dans l’onglet Data (Données), dans le groupe Definition Query (Ensemble de définition), cliquez sur le bouton Build Definition Query (Créer un ensemble de définition) Lanceur pour ouvrir la boîte de dialogue Layer Properties (Propriétés de la couche) avec l’onglet Definition Query (Ensemble de définition). Pour modifier un ensemble de définition, placez le pointeur dessus et effectuez l’une des opérations suivantes :

  • Pour modifier, ajouter des clauses à un ensemble de définition ou en supprimer, cliquez sur Edit (Mettre à jour) dans la cellule de la requête.
    • Pour mettre à jour une clause d’une requête, modifiez les valeurs comme vous le souhaitez.
    • Pour retirer une clause de la requête, cliquez sur Remove Clause (Supprimer la clause) Supprimer la clause.
    • Pour ajouter une clause à la requête, cliquez sur Add Clause (Ajouter une clause) Ajouter une nouvelle clause.

    Cliquez sur Apply (Appliquer) pour appliquer les modifications à l’ensemble de définition.

  • Pour supprimer l’ensemble de définition de la couche ou de la table, hors mode de mise à jour, passez le pointeur de la souris sur la cellule de l’ensemble de définition et cliquez sur Remove definition query (Supprimer l’ensemble de définition) Retirer.
  • Pour renommer un ensemble de définition, cliquez sur son nom et entrez-en un nouveau.
  • Pour exporter la syntaxe à un fichier d’expression de la requête (.exp), hors mode de mode de mise à jour, passez le pointeur de la souris sur la cellule de l’ensemble de définition et cliquez sur Save definition query (Enregistrer l’ensemble de définition) Enregistrer.
  • Pour remplacer la requête actuelle par une autre requête à partir d’un fichier d’expression de la requête (.exp), hors mode de mode de mise à jour, passez le pointeur de la souris sur la cellule de l’ensemble de définition et cliquez sur Load definition query (Charger l’ensemble de définition) Charger la requête.

Définir des ensembles de définition pour plusieurs couches à la fois

Si plusieurs couches partagent des ensembles de définition dont le nom est commun, même si le contenu des requêtes n’est pas identique, les requêtes peuvent être activées pour toutes les couches à la fois. Cela signifie que vous pouvez générer un certain nombre de requêtes associées dans certains cas et les appliquer simultanément. Vous pouvez ensuite passer d’un ensemble de requêtes à un autre selon tel ou tel scénario, si nécessaire.

Pour appliquer simultanément des ensembles de définition avec un nom commun à plusieurs couches, procédez comme suit :

  1. Assurez-vous que les couches sont sélectionnées dans la fenêtre Contents (Contenu).
  2. Dans l’ensemble d’onglets Feature Layer (Couche d’entités), cliquez sur l’onglet Data (Données).
  3. Dans l’onglet Data (Données), dans le groupe Definition Query (Ensemble de définition), choisissez un ensemble dans le menu Definition Query (Ensemble de définition) pour l’appliquer à la couche.

    Seuls les ensembles de définitions avec un nom commun à toutes les couches sélectionnées sont visibles.

Automatiser la création d’ensembles de définition

Vous pouvez automatiser la création et l’exécution d’ensembles de définition avec Python à l’aide d’une combinaison de fonctions ArcPy. Pour obtenir plus d’informations sur ce sujet, notamment des exemples de code, consultez la documentation des classes de la couche.

Partage de couches comportant des ensembles de définitions

Lorsqu’une couche est partagée en tant que couche d’entités ou au sein d’une couche d’images de carte, seul l’ensemble de définition actif est préservé et appliqué. Les autres ensembles de définitions sont ignorés.