Présentation rapide des tables système de la géodatabase
La structure interne de la géodatabase est représentée sous la forme d'une série de tables simples, appelées tables système de la géodatabase (dont le préfixe est GDB_), qui suivent le contenu de chaque géodatabase. Elles décrivent essentiellement la structure de géodatabase spécifiant l'ensemble des définitions de jeu de données, des règles et des relations. Elles assurent également le stockage et la gestion de toutes les métadonnées requises pour l'implémentation des propriétés des géodatabases, des règles de validation de données et des comportements.
La structure interne de ces tables a été restructurée à partir de la version 10 d'ArcGIS. Les informations relatives à la structure de la géodatabase qui étaient, avant ArcGIS 10, stockées dans plus de 35 tables système de la géodatabase, ont été consolidées dans quatre tables principales :
- GDB_Items - Renferme la liste de tous les éléments contenus dans une géodatabase, tels que les classes d'entités, les topologies et les domaines
- GDB_ItemTypes - Renferme la liste prédéfinie de types d'élément reconnus, tels que Table.
- GDB_ItemRelationships - Renferme les associations de structures entre les éléments. Indique par exemple quelles classes d'entités sont contenues dans un jeu de données d'entités.
- GDB_ItemRelationshipTypes - Renferme la liste prédéfinie des types de relations reconnus, tels que DatasetInFeatureDataset.
Les tables GDB_Items et GDB_ItemRelationships représentent la structure définie par l'utilisateur dans une géodatabase particulière. Le contenu des tables est modifié lorsque la structure de la géodatabase est modifiée. Les tables GDB_ItemTypes et GDB_ItemRelationshipTypes sont statiques. Le diagramme suivant illustre les relations entre ces quatre tables :
Table GDB_Items
Une géodatabase comporte des éléments géographiques et non géographiques. Parmi ces éléments figurent des jeux de données tabulaires, tels que les classes d'entités et les tables, des conteneurs de jeu de données, tels que les jeux de données d'entités, les topologies et les réseaux géométriques, des jeux de données qui contrôlent le comportement des géodatabases plus avancées, et d'autres éléments tels que les domaines, les boîtes à outils et les extensions d'espace de travail. Depuis ArcGIS 10, tous ces éléments sont stockés au sein de la géodatabase dans la table GDB_Items, où chaque élément est stocké sur une seule ligne.
Un élément comporte les attributs suivants :
- UUID - Identifiant unique de l'élément
- Name - Nom de l'élément
Veuillez noter que le nom d'un élément n'est pas forcément unique. Par exemple, une classe de relations et une classe d'entités peuvent porter le même nom. Toutefois, il n'est pas recommandé de donner le même nom aux éléments, car les noms des attributs doivent être assez descriptifs pour indiquer ce que contient l'élément.
- Type - UUID qui représente le type d'élément dans l'enregistrement. Cela correspond à l'identifiant unique.
- Definition - Document XML qui définit les propriétés d'un élément. Ces propriétés et le schéma XML varient selon le type d'élément. Par exemple, la définition d'une classe d'objets contient des informations telles que les codes, alors que la définition d'un domaine de valeurs précodées contient des paires de valeurs et de codes et la définition d'une classe de relations contient (entre autres) des règles de relations.
- Documentation - Document XML qui stocke les métadonnées de l'élément.
- Properties - Valeur d'entier pouvant être utilisée avec des masques binaires pour extraire plusieurs propriétés booléennes de l'élément. Actuellement, cet attribut n'est utilisé que pour indiquer si un élément est visible dans ArcGIS Desktop.
- Shape - Etendue du jeu de données en tant que polygone, le cas échéant (le type de données dépend du SGBD sous-jacent).
Il s'agit des sept attributs auxquels vous pouvez être le plus amené à accéder avec SQL.
Les attributs suivants stockent des informations provenant de la définition d'un élément (par exemple le type de géométrie d'une classe d'entités), qui sont dupliquées en dehors de la définition XML pour permettre de parcourir plus efficacement la géodatabase. Il peut par exemple s'agir des propriétés de code du jeu de données et d'informations sur le jeu de données, dont les codes dépendent du type de l'élément.
- Physical Name - Nom complet de l'élément
- DatasetSubtype1 - Pour les classes d'entités et les catalogues d'images, DatasetSubtype1 stocke le type d'entité de la table. Pour les classes de relations, il stocke la cardinalité de la classe de relations. Pour les topologies, l'identifiant de topologie est stocké.
- DatasetSubtype2 - Pour les classes d'entités et les catalogues d'images, DatasetSubtype2 stocke le type de géométrie. Pour les classes de relations, il stocke une valeur qui indique si la relation est attribuée ou non.
- DatasetInfo1 - Stocke le nom du champ Shape pour les éléments de la classe d'entités.
- DatasetInfo2 - Stocke des informations pour les classes d'entités qui participent aux topologies
- Path - Chemin relatif unique de l'élément.
- URL - URL associée à l'élément. Utilisée avec les services de catalogue.
- Defaults - Métadonnées d'élément. Attribut non utilisé directement par les géodatabases, mais utilisé par d'autres clients, tels que les services de métadonnées ArcIMS.
- ItemInfo - Informations de stockage pour l'élément, telles que la symbologie, qui sont indépendantes du jeu de données sous-jacent.
Table GDB_ItemTypes
La table GDB_ItemTypes contient l'ensemble prédéfini de types d'éléments reconnus dans la géodatabase. Les types d'éléments permettent de normaliser la table GDB_Items (le type d'un élément dans la table GDB_Items est représenté sous la forme d'un UUID), de mieux prendre en charge les futures améliorations des fonctionnalités de la géodatabase et de définir une hiérarchie de type. Tous les types parents étant abstraits, les éléments parents ne figurent pas réellement dans la table GDB_Items.
Le contenu de la table GDB_ItemTypes est statique. Il n'est pas modifié lorsque des éléments sont créés ou supprimés.
Un type d'élément possède les attributs suivants :
- UUID - Identifiant unique d'un type d'élément et clé étrangère de la colonne de type de la table GDB_Item.
- ParentTypeID - Type parent du type d'élément. Dans le cas du type d'élément abstrait (qui n'a aucun parent), il s'agit d'un UUID nul.
- Name - Nom d'un type d'élément, tel que Classe d'entités ou Domaine par plage.
- ObjectID - Identifiant unique de la table GDB_ItemTypes.
Table GDB_ItemRelationships
Presque tous les éléments d'une géodatabase ont des relations avec au moins un autre élément de géodatabase. Par exemple, une table autonome est associée au dossier racine d'une géodatabase, un domaine est associé aux classes d'entités ou tables qui reposent sur lui pour la validation, et les classes d'entités sont associées à la topologie à laquelle elles participent. La table GDB_ItemRelationships permet de suivre ces relations.
Les relations des éléments ont les attributs suivants :
- UUID - Identifiant unique de la relation d'un élément.
- Type - UUID représentant le type de la relation. Cela correspond à l'identifiant unique du type de relation des éléments.
- OriginID - Identifiant unique de l'élément d'origine de la relation.
- DestinationID - Identifiant unique de l'élément de destination de la relation.
- Attributes - Document XML qui contient des informations détaillées concernant la relation des éléments.
Beaucoup de types de relation n'incluent pas d'attributs ; ils sont utilisés uniquement dans certaines relations entre les jeux de données du contrôleur et leurs jeux de données contrôlés.
- ObjectID - Identifiant unique.
- Properties - Valeur d'entier pouvant être utilisée avec des masques binaires pour extraire plusieurs propriétés booléennes de l'élément. Cet attribut n'est actuellement utilisé que pour indiquer si les éléments qui participent à la relation sont visibles dans ArcGIS Desktop.
Vous n'accéderez probablement qu'aux cinq premiers attributs avec SQL.
Il est important de comprendre qu'une relation d'éléments n'est pas analogue à une classe de relations. En réalité, chaque classe de relations comporte des relations d'éléments avec deux classes d'objets (ses classes source et de destination), ainsi qu'une relation d'éléments supplémentaire avec son conteneur (le dossier racine de la géodatabase ou un jeu de données d'entités).
Table GDB_ItemRelationshipTypes
De la même façon qu'un ensemble statique de types d'éléments permet de classer des éléments, un ensemble statique de types de relations d'éléments permet de classer des relations d'éléments. Par exemple, DatasetInFeatureDataset (qui indique qu'une classe d'entités, une classe de relations ou un jeu de données du contrôleur est présent dans un jeu de données d'entités) et DomainInDataset (qui indique qu'un jeu de données utilise un domaine pour la validation au niveau de la classe ou au niveau du code) sont deux types de relations d'éléments. Contrairement aux types d'éléments, les types de relations d'éléments ne comportent pas de concept hiérarchique avec les types parents et enfants.
Les types de relations d'éléments ont les attributs suivants :
- UUID - Identifiant unique d'un type de relation d'éléments et la clé primaire pour la colonne de type de la table des relations des éléments
- Name - Nom du type de relation d'éléments, tel que DatasetInFolder
- Forward Label - Description de la relation à partir du contexte de l'élément d'origine.
- Backward Label - Description de la relation à partir du contexte de l'élément de destination.
- Origin Item Type ID - UUID du type d'élément pouvant se comporter comme l'élément d'origine dans les relations d'éléments de ce type.
- Destination Item Type ID - UUID du type d'élément pouvant se comporter comme l'élément d'origine dans les relations d'éléments de ce type.
- Is Containment - Indique si l'élément de destination peut exister même si l'élément d'origine est supprimé.
Les identifiants du type d'élément d'origine et de destination sont souvent les identifiants de types d'éléments abstraits. Par exemple, l'identifiant du type d'origine du type de relation DomainInDataset est Domaine, qui est un type d'élément abstrait avec deux codes : Domaine par plage et Domaine de valeurs précodées.
XML dans les tables système de la géodatabase
Comme indiqué dans les définitions d'attributs des tables système de la géodatabase, certains des champs utilisent un type de données XML. Dans les géodatabases ArcSDE IBM DB2, Microsoft SQL Server et PostgreSQL, ces colonnes utilisent le XML natif du système de gestion de bases de données et, par conséquent, peuvent être interrogées à l'aide d'expressions Xpath avec SQL.
Dans les géodatabases Oracle et Informix, les colonnes XML utilisent XML ArcSDE, qui stocke les informations sous forme d'objets BLOB dans une série de tables distinctes. Ainsi, elles ne sont pas directement accessibles avec SQL.
Pour vous permettre d'afficher le contenu des colonnes XML dans les tables système des géodatabases Oracle, deux vues système stockent le contenu des colonnes XML des tables système de la géodatabase dans un type de données CLOB. GDB_Items_vw affiche le contenu des colonnes Definition, Documentation et ItemInfo de la table GDB_Items dans les colonnes CLOB. GDB_ItemRelationships_vw affiche le contenu de la colonne Attributes de la table GDB_ItemRelationships dans une colonne CLOB. Le contenu des colonnes CLOB peut être lu en tant que texte.
Lors de l'interrogation de ces vues, vous extrayez la chaîne de la colonne CLOB, la convertissez en type XML, puis exécutez une requête XPath sur celle-ci. Sachez que si vous essayez de créer un type XML pour une colonne contenant une chaîne vide, l'opération échouera car Oracle ne la prend pas en charge et le message "Echec de l'analyse XML" s'affichera.
Pour interroger le contenu des colonnes CLOB, vous devez configurer le serveur Oracle de sorte qu'il accepte les connexions SQL. Pour plus d'informations, reportez-vous à la rubrique Configuration d'Oracle Listener pour utiliser SQL.