Vous pouvez faire glisser une couche de base de données sur la carte afin de créer automatiquement une couche de requête, ou utiliser le bouton Add Data (Ajouter des données) sur l’onglet Map (Carte) pour créer une couche de requête dans votre carte.
Conseil :
Cette page explique comment créer une couche de requête destinée à une table dans une base de données. Pour accéder aux données d’un stockage de données cloud, reportez-vous à la rubrique Créer une couche de requête destinée aux données d’un stockage de données cloud.
Les couches de requête qui ont accès aux tables système de la géodatabase ne sont pas prises en charge.
Prérequis et processus
Avant de créer une couche de requête, lisez la rubrique Configurations de base de données et de client pour les couches de requête.
Lisez ensuite les sous-sections ci-dessous afin de comprendre le processus de création d’une couche de requête pour une base de données à l’aide de la boîte de dialogue New Query Layer (Nouvelle couche de requête).
Connexion à la base de données
Pour pouvoir définir une couche de requête, vous devez vous connecter à la base de données à interroger.
Vous pouvez créer une connexion à une base de données dans la fenêtre Catalog (Catalogue), comme décrit dans la rubrique Connexions aux bases de données dans ArcGIS AllSource, l’ajouter au projet et y accéder depuis la boîte de dialogue New Query Layer (Nouvelle couche de requête) ou créer la connexion à la base de données à partir de la boîte de dialogue New Query Layer (Nouvelle couche de requête).
Définir une requête SQL
Spécifiez une requête SQL dans la zone de texte Query (Requête) pour accéder aux données dont vous avez besoin à partir de la table ou de la vue.
Vous pouvez coller une requête SQL dans la zone de texte Query (Requête) ou, si vous n’avez pas préparé de requête SQL et que vous devez afficher une liste de tables, cocher la case List of Tables (Liste de tables). Vous pouvez double-cliquer sur les tables et les colonnes qui apparaissent dans la liste pour créer une requête SQL : double-cliquez sur la table ou faites-la glisser depuis la fenêtre de liste des tables vers la zone de texte Query (Requête).
Chaque colonne d'une base de données comporte un type de données spécifique. ArcGIS fonctionne avec la plupart des types de base de données courants. Cependant, certains types de base de données peu courants ne sont pas pris en charge. Si le type de colonne attributaire est inconnu, cela indique qu'ArcGIS ne prend pas en charge ce type de données. Lorsque vous spécifiez une requête, toutes les colonnes comportant un type de données inconnu doivent être exclues ou remplacées dans la requête par un type de données pris en charge par ArcGIS. Reportez-vous à la rubrique Types de données SGBD pris en charge dans ArcGIS pour obtenir la liste des types de données pris en charge par base de données.
Lorsque vous créez une couche de requête, utilisez la syntaxe SQL spécifique à la base de données. SELECT * FROM Test.myuser.US_States est un exemple courant de cette syntaxe. Cette instruction génère une couche de requête contenant toutes les lignes de la table US_States. L’intégralité des États-Unis apparaît alors sur la carte.
Pour savoir comment utiliser des variables dans les requêtes SQL, reportez-vous à la rubrique Définir des paramètres dans une couche de requête.
Valider l’instruction SQL
Après avoir défini la requête SQL, validez-la. Lors de la validation, ArcGIS utilise les propriétés de la première ligne renvoyée dans la table pour déterminer la validité de la requête.
ArcGIS utilise également les propriétés de la première ligne renvoyée par la requête pour filtrer les autres lignes à afficher sur la carte pour respecter les exigences ArcGIS. Par exemple, ArcGIS prend en charge une seule référence spatiale dans une table spatiale. Si les entités de votre classe d’entités utilisent des ID de référence spatiale (SRID) différentes, par défaut, la couche de requête renverra uniquement les lignes qui ont le même SRID que la première entité renvoyée par la requête. De même, ArcGIS prend en charge un seul type de géométrie par table. Par défaut, seules les entités ayant le même type de géométrie que la première ligne renvoyée par la requête apparaîtront sur la carte. Pour utiliser un SRID ou un type de géométrie différent, définissez les propriétés spatiales de la couche de requête.
Spécifier un identifiant unique
L’identifiant unique est l’une des nombreuses colonnes utilisées par ArcGIS pour identifier chaque ligne de la table.
Pendant la validation, ArcGIS tente d’identifier une seule colonne d’identifiant unique pour la table. Si une colonne adéquate est trouvée, vous pouvez l’utiliser pour la couche de requête. Si aucun identifiant unique n’est trouvé, ou si vous voulez utiliser un identifiant unique différent, vous pouvez le définir dans le volet suivant de la boîte de dialogue.
Si vous voulez publier une couche d’entités comportant la couche de requête, le champ d’identifiant unique de la couche de requête doit être une colonne unique, non nulle et gérée par la base de données.
Définir les propriétés spatiales (facultatif)
Pour les classes d’entités ou les vues contenant une colonne spatiale, vous pouvez définir les valeurs suivantes ou utiliser les valeurs par défaut détectées par ArcGIS lors de la validation :
- Type de géométrie : détermine si la couche stocke des entités ponctuelles, multi-points, linéaires ou surfaciques.
- Valeurs Z et M : ces options déterminent si la couche contiendra des entités avec des coordonnées z ou m.
- Référence spatiale : il s'agit du système de coordonnées et d'autres propriétés spatiales associées à la couche.
Il peut arriver qu’ArcGIS ne soit pas en mesure de déterminer avec précision la référence spatiale en fonction de la valeur SRID actuelle définie sur les entités dans la base de données. Lorsque cela se produit, la couche de requête a une référence spatiale inconnue et vous devez en définir une. Cela ne s’applique pas aux stockages de données cloud, pour lesquels il est impossible de définir une référence spatiale.
Remarque :
La définition d’une référence spatiale pour la couche de requête ne reprojette pas les données. Elle définit simplement la référence spatiale qui doit être utilisée lors de l’appariement des résultats de la requête dans ArcGIS. - SRID : identifiant de référence spatiale de la couche utilisé pour s’assurer que seules les géométries dotées du même identifiant de référence spatiale sont renvoyées par la requête. La valeur SRID est vierge si la couche de requête ne possède pas de champ spatial. Si cette valeur est définie, toutes les entités dépourvues de la valeur SRID de géométrie spécifiée sont exclues du jeu de résultats. Si les données de votre base de données utilisent un SRID personnalisé, vous devez indiquer ce SRID dans les propriétés spatiales de la couche de requête. Cela ne s’applique pas aux stockages de données cloud.
Créer une couche de requête destinée à une table de base de données
Si la table que vous voulez interroger ne contient pas des centaines de milliers d’enregistrements, vous pouvez la faire glisser sur la carte pour créer automatiquement une couche de requête. Dans le cas de jeux de données plus volumineux, utilisez la boîte de dialogue New Query Layer (Nouvelle couche de requête) pour définir la couche de requête.
Faire glisser la table sur la carte
Lorsque vous faites glisser une classe d’entités, une table ou une vue de base de données sur la carte à partir d’une connexion à une base de données dans la fenêtre Catalog (Catalogue), ArcGIS AllSource crée automatiquement une couche de requête qui sélectionne toutes les lignes et tous les champs de cette classe d’entités, cette table ou cette vue. Cela s’applique toutefois uniquement aux bases de données et non aux géodatabases d’entreprise.
ArcGIS AllSource calcule l’étendue de la couche lorsque vous la faites glisser dans la carte. Si vous ajoutez une table contenant de nombreuses entités, le calcul de l’étendue peut prendre plus de temps. Si vous connaissez l'étendue des données ou si vous voulez utiliser l'étendue de votre référence spatiale plutôt que d'attendre que l'étendue soit calculée, vous pouvez le faire. Cliquez sur le bouton approprié dans la boîte de dialogue Calculer à partir de l'étendue. Si vous cliquez sur Input Extent (Étendue en entrée), vous devez saisir une étendue valide englobant toutes les entités de la table.
Après avoir ajouté la couche à la carte, vous pouvez si nécessaire modifier la couche de requête.
Définir une requête
Pour définir une couche de requête sur une carte dans un projet ArcGIS AllSource à l’aide de la boîte de dialogue New Query Layer (Nouvelle couche de requête), procédez comme suit :
- Dans ArcGIS AllSource, ouvrez la carte à laquelle vous voulez ajouter la couche de requête.
- Cliquez sur le bouton Add Data (Ajouter des données) sur le ruban Map (Carte) et sélectionnez le bouton Query Layer (Couche de requête) dans la liste déroulante.
La boîte de dialogue New Query Layer (Nouvelle couche de requête) s’ouvre.
- Spécifiez une connexion à l’aide de l’une des méthodes suivantes :
- Si le fichier de connexion (.sde) existe déjà dans le projet, sélectionnez-le dans la liste déroulante.
- Si la connexion n’existe pas dans le projet, sélectionnez le bouton de nouvelle connexion à une base de données et créez une connexion.
- Dans la zone de texte Name (Nom), donnez un nom à la requête que vous créez.
Il s’agit du nom qui apparaîtra dans la fenêtre Contents (Contenu) de la carte.
- Entrez ou collez une requête SQL dans la zone de texte Query (Requête).
Pour afficher une liste de tables et leurs colonnes, cochez la case List of Tables (Liste de tables). Vous pouvez double-cliquer sur une table de la section List of Tables (Liste de tables) pour ajouter toutes les colonnes de la table à la zone de texte Query (Requête) et modifier la requête dans la zone de texte Query (Requête). Par exemple, vous pouvez supprimer de la requête les colonnes que vous ne souhaitez pas inclure et y ajouter des clauses à la requête pour limiter les données incluses dans la couche de requête.
- Choisissez comment les propriétés spatiales de la couche seront définies.
- Sélectionnez Let ArcGIS Pro discover spatial properties for the layer (Autoriser ArcGIS Pro à découvrir les propriétés spatiales de la couche) (option par défaut) pour autoriser ArcGIS AllSource à utiliser les propriétés spatiales de la première ligne renvoyée par la requête. ArcGIS AllSource découvre ces propriétés lorsque vous validez l’instruction SQL.
- Pour que la couche inclue les entités avec des propriétés spatiales différentes de celles de la première ligne, sélectionnez Define spatial properties for the layer (Définir les propriétés spatiales de la couche).
- Vous devez vérifier que la syntaxe de la requête est correcte et qu’ArcGIS peut utiliser la requête. Cliquez sur Validate (Valider) pour démarrer le processus de validation.
La validation exécute la requête dans la base de données et vérifie si le jeu de résultats de la requête satisfait les normes de modélisation de données appliquées par ArcGIS. Une couche de requête n'est pas ajoutée à la carte tant qu'elle n'est pas validée.
Les règles de validation sont les suivantes :
- Le jeu de résultats doit comporter un champ spatial au maximum.
- Le jeu de résultats doit comporter une référence spatiale au maximum.
- Le jeu de résultats doit comporter un seul type de forme.
- Le jeu de résultats ne doit comporter aucun type de champ non pris en charge par ArcGIS.
Si la validation échoue pour quelque raison que ce soit, un message d'erreur est renvoyé pour que vous puissiez modifier la requête.
La validation est particulièrement importante si vous utilisez des données de bases de données spatiales n'appliquant pas les mêmes normes qu'ArcGIS.
- Une fois la requête validée, cliquez sur Next (Suivant).
- Sélectionnez le champ d’identifiant unique de la couche de requête ou utilisez le champ sélectionné par ArcGIS AllSource.
Toutes les entités de la carte nécessitent un identifiant unique. Votre couche de requête doit donc contenir un identifiant unique comprenant une valeur pour chaque entité. Pour en savoir plus, reportez-vous à la rubrique Choisir un champ d'identifiant unique pour une couche de requête.
- Sélectionnez le type de géométrie et la référence spatiale.
Ces paramètres peuvent être déjà configurés si vous avez choisi de laisser ArcGIS AllSource déterminer les propriétés spatiales à votre place.
- Sélectionnez le type de géométrie dans le menu déroulant.
- Cliquez sur le bouton Coordinate System (Système de coordonnées) pour choisir le système de coordonnées de la référence spatiale utilisée par les données, ou importez la référence spatiale à partir d’un jeu de données existant. N’oubliez pas que cette action ne reprojette pas les données.
- Si vous avez choisi de laisser ArcGIS AllSource définir les propriétés spatiales à l’étape 6, cliquez sur Finish (Terminer) pour ajouter la couche de requête à la carte.
- Si vous avez choisi de définir les propriétés spatiales de la couche à l’étape 6, une section supplémentaire apparaît dans la boîte de dialogue ci-dessus. Dans cette section (Layer Extent Properties [Propriétés de l’étendue de la couche]), vous devez spécifier l’étendue spatiale de la couche de requête en choisissant parmi les options suivantes :
- Input Extent (Étendue en entrée) : lorsque vous cliquez sur Next (Suivant), vous devez saisir l’étendue. L’étendue que vous indiquez doit être valide et inclure toutes les entités de la table.
- Use Map Extent (Utiliser l’étendue de la carte) : l’étendue de la carte actuelle est utilisée pour l’étendue de la couche de requête. Cliquez sur Next (Suivant) pour vérifier les valeurs d’étendue de la carte.
- Use Spatial Reference Extent (Utiliser l’étendue de la référence spatiale) : l’étendue de la référence spatiale est utilisée pour l’étendue de la couche de requête. Pour certaines références spatiales, cela correspond à l’intégralité du globe. Cliquez sur Next (Suivant) et vérifiez les valeurs d’étendue de la référence spatiale.
- Une fois que vous avez fini de définir ou de vérifier l’étendue de la couche, cliquez sur Finish (Terminer) pour ajouter la couche de requête à la carte.
Pour plus d’informations sur la modification des propriétés de la couche de requête, reportez-vous à la rubrique Modifier une couche de requête.
Rubriques connexes
Vous avez un commentaire à formuler concernant cette rubrique ?