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 filtre qui limite 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 pour l’interrogation et le traitement, envisagez d’utiliser des filtres d’affichage à la place. 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. Il existe deux types de clauses : les clauses attributaires et les clauses spatiales. Toutes les clauses sont écrites en langage SQL et construites à l’aide du 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 requêtes sont définies pour une couche, elles peuvent toutes être désactivées, ce qui signifie qu’aucune requête n’est appliquée activement.
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 :
- Assurez-vous qu’une couche est sélectionnée dans la fenêtre Contents (Contenu).
- Dans l’ensemble d’onglets Feature Layer (Couche d’entités), cliquez sur l’onglet Data (Données).
- 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)
pour ouvrir la boîte de dialogue Layer Properties (Propriétés de la couche) avec l’onglet Definition Query (Ensemble de définition).
- 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 concepteur (à l’aide de clauses) ou en mode éditeur (à l’aide d’un code SQL), ou créer un fichier d’expression de requête (.exp).
- Dans le générateur de requêtes, choisissez parmi les valeurs des menus pour élaborer la clause. Ces menus et leurs valeurs sont propres aux données source sous-jacentes.
- Vous pouvez également cliquer sur Add Clause (Ajouter une clause)
pour ajouter une autre clause attributaire à la requête. Sélectionnez les valeurs requises dans les menus de la nouvelle clause. Répétez cette étape pour ajouter d’autres clauses attributaires ou cliquez sur son menu déroulant pour ajouter une clause spatiale.
- Cliquez éventuellement sur Settings (Paramètres)
pour modifier l’affichage de la requête ou de ses valeurs de champ. Ces paramètres sont appliqués à toutes les clauses.
- 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 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.
- 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.
- SQL autocomplete (Terminer automatiquement le code SQL) est un paramètre du mode éditeur activé par défaut qui vous propose des suggestions lorsque vous écrivez du code SQL. Cliquez sur ce paramètre pour désactiver la fonctionnalité SQL autocomplete (Terminer automatiquement le code SQL).
- L’option Show domain and subtype values only (Afficher les valeurs de domaine et de sous-type uniquement) est sélectionnée par défaut. Cliquez sur Show all values (Afficher toutes les valeurs) pour inclure les valeurs non valides ou incorrectes dans le menu déroulant de valeurs uniques du champ.
- Vous pouvez éventuellement placer le pointeur sur le nom de l’ensemble et cliquer dessus pour le renommer.
- Vous pouvez éventuellement cliquer sur Verify the SQL expression is valid (Vérifier que l’expression SQL est valide)
pour vérifier la requête.
- Pour vérifier et finaliser la requête, dans le générateur de requêtes, cliquez sur Apply (Appliquer).
- 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)
pour appliquer un ensemble de définition à la couche.
Ajouter une clause spatiale à un ensemble de définition
Non seulement les ensembles de définitions peuvent contenir plusieurs clauses, mais ils peuvent inclure une clause spatiale. Contrairement aux clauses standard qui filtrent les entités extraites du jeu de données en spécifiant un champ ou une plage de valeurs, les clauses spatiales utilisent la géométrie d’une couche ou d’une étendue spatiale.
Un ensemble de définition ne peut inclure qu’une seule clause spatiale.
Remarque :
Les couches d’entités prennent en charge les clauses spatiales, mais ces dernières ne sont pas prises en charge avec certains autres types de couches. Examinez la documentation de votre type de couche pour déterminer si ce dernier prend en charge les clauses spatiales.
Pour ajouter une clause spatiale à un ensemble de définition existant, procédez comme suit :
- Si nécessaire, cliquez avec le bouton droit sur la couche dans la fenêtre Contents (Contenu) et sélectionnez Properties (Propriétés) pour ouvrir la boîte de dialogue Layer Properties (Propriétés de la couche).
- Dans l’onglet Definition Query (Ensemble de définition), cliquez sur Edit (Mettre à jour) pour modifier une requête existante ou suivez les étapes 1 à 6 du processus ci-avant pour créer un ensemble de définition.
- Cliquez sur le menu déroulant Add Clause (Ajouter une clause), puis sur Add Spatial Clause (Ajouter une clause spatiale).
La boîte de dialogue Spatial Clause Geometry (Géométrie de clause spatiale) apparaît.
- Dans la boîte de dialogue Spatial Clause Geometry (Géométrie de clause spatiale), sélectionnez l’une des options suivantes :
- Choose a layer (Choisir une couche) : utilisez la géométrie d’une couche de la carte active. Vous ne pouvez pas choisir une couche graphique ou multipatch. Vous pouvez utiliser la géométrie de toutes les entités de la couche, de certaines entités seulement ou des seules entités de la vue. Si la couche utilisée pour générer la géométrie est mise à jour ou supprimée de la carte, la géométrie de la clause spatiale n’est pas affectée.
- Choose a custom extent (Sélectionner une étendue personnalisée) : utilisez une étendue personnalisée de l’une des sources suivantes :
- L'étendue visible actuelle
- L’étendue des données dans toutes les couches
- L’étendue de l’ensemble des entités ou éléments d’une couche
- L’étandue de l’ensemble des entités/éléments sélectionnés
- Choisissez une couche ou une option d’étendue dans la liste pour générer la géométrie de la clause spatiale. Un aperçu de la géométrie est affiché.
- Cliquez sur OK.
Une clause spatiale est ajoutée à la requête. En mode éditeur et concepteur, la clause spatiale apparaît sous les expressions de clause attributaire. L’opérateur AND ajoute la clause spatiale au reste de l’expression.
Remarque :
Le nom de champ Shape (Forme) et l’opérateur is intersected by (est intersecté par) sont des composants requis de la clause spatiale. Ces valeurs ne peuvent pas être modifiées.
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 :
- Assurez-vous qu’une couche est sélectionnée dans la fenêtre Contents (Contenu).
- Dans l’ensemble d’onglets Feature Layer (Couche d’entités), cliquez sur l’onglet Data (Données).
- 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.
- Vous pouvez aussi définir la requête active dans l’onglet Definition Query (Ensemble de définition) de la boîte de dialogue Layer Properties (Propriétés de la couche).
- Cliquez sur Set as Active (Définir comme actif)
, puis cliquez sur Apply (Appliquer) 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)
pour faire défiler la liste jusqu’à lui.
- Cliquez sur Clear active query (Effacer la requête active)
, puis cliquez sur Apply (Appliquer) 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.
- Cliquez sur Set as Active (Définir comme actif)
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) pour ouvrir la boîte de dialogue Layer Properties (Propriétés de la couche) avec l’onglet Definition Query (Ensemble de définition) ouvert. 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)
.
- Pour ajouter une clause à la requête, cliquez sur Add Clause (Ajouter une clause)
.
- Pour mettre à jour la géométrie de la clause spatiale d’une requête existante, cliquez sur Geometry (Géométrie)
.
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)
.
- 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)
.
- 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)
.
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 :
- Assurez-vous que les couches sont sélectionnées dans la fenêtre Contents (Contenu).
- Dans l’ensemble d’onglets Feature Layer (Couche d’entités), cliquez sur l’onglet Data (Données).
- 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 le fonctionnement des 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.
Vous pouvez également générer un ensemble de définition à partir de la sélection sur une couche d’entités, à l’aide de l’outil Generate Definition Query From Selection (Générer un ensemble de définition à partir de la sélection).
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.
Si la requête contient une clause spatiale, une erreur est renvoyée. Pour plus d’informations, reportez-vous à l’erreur 00428 : la clause spatiale de l’ensemble de définition n’est pas prise en charge par le serveur.
Rubriques connexes
Vous avez un commentaire à formuler concernant cette rubrique ?