Classes d'entités d'une géodatabase dans SQL Server
Une classe d'entités est une collection d'entités géographiques du même type géométrique (points, lignes, polygones, multi-points, annotations, cotes ou multipatch). Vous pouvez par exemple stocker des points dans une classe d'entités pour tous les dépôts ferroviaires situés le long d'une ligne de chemin de fer. Dans une autre classe d'entités, vous pouvez stocker des lignes qui représentent l'ensemble des voies ferrées.
Cette rubrique présente la façon dont une classe d'entités apparaît dans le fenêtre Catalogue, dans le système de gestion de bases de données (SGBD) et dans un document XML.
Classes d'entités dans ArcGIS for Desktop
Il existe sept types de classes d'entités que vous pouvez créer dans ArcGIS for Desktop : point, multi-points, ligne, polyligne, annotation, cote et multipatch.
Vous pouvez identifier le type de classe d'entités grâce à l'icône qui apparaît dans l'arborescence du catalogue. Le tableau répertorie les icônes de chaque type de classe d'entités.
Icône de classe d'entités |
Type de classe d'entités |
---|---|
Point ou multi-points |
|
Ligne |
|
Polygone |
|
Annotations |
|
Cotes |
|
Multipatch |
Dans Microsoft SQL Server, le nom d'une classe d'entités, tel qu'il apparaît dans l'arborescence du catalogue, comprend le nom de la base de données dans laquelle se trouve la classe d'entités, le nom du propriétaire de la classe d'entités et le nom de la classe d'entités elle-même.
Par exemple, une classe d'entités nommée parcels, dont le propriétaire est l'utilisateur sasha, dans une géodatabase nommée geodata, apparaît sous la forme geodata.SASHA.PARCELS dans l'arborescence du catalogue.
Pour obtenir une description des différents types de classes d'entités, reportez-vous à la rubrique Principes de base des classes d'entités.
Classes d'entités stockées dans une base de données Microsoft SQL Server
Les classes d'entités dans les bases de données SQL Server utilisent l'un des trois types de stockage de géométries suivants : binaire, géométrie Microsoft ou géographie Microsoft.
Toutes les classes d'entités sont associées à une table de base (aussi appelée table métier), qui stocke des informations attributaires, un identifiant d'objet et un champ de forme. Les champs de forme et d'identifiant d'objet peuvent avoir des noms différents, mais ils doivent figurer dans la table de base d'une classe d'entités.
Les classes d'entités annotations ou de cotations présentent des champs obligatoires supplémentaires dans leurs tables de base. Reportez-vous aux rubriques Gestion des propriétés des classes d'entités annotations et Propriétés d'entité cotation pour consulter la liste de ces champs.
Suite au chargement des données ou à la création de la géodatabase, il se peut que votre base de données comporte plusieurs tables i et procédures mémorisées. Ces procédures mémorisées et tables i permettent de générer les identifiants des entités pour les classes d'entités. Le nom des tables i contient un nombre. Ce nombre correspond à l'identifiant registration_id de la classe d'entités dans la table SDE_table_registry. La modification de ces tables ou de ces procédures stockées n'est pas prise en charge et est fortement déconseillée.
Classes d'entités stockées avec le type de géométrie ou de géographie de Microsoft dans une base de données SQL Server
Les géodatabases stockées dans une base de données SQL Server utilisent par défaut le type de stockage de géométrie de Microsoft pour le stockage des entités. Elles peuvent également utiliser le type de stockage de géographie de Microsoft. Les classes d'entités qui utilisent l'un de ces types de stockage possèdent une table de base. La table de base contient une colonne de type GEOMETRY ou GEOGRAPHY pour le stockage de la géométrie de la classe d'entités. Il n'existe aucune table d'entités associée.
La table de base est une table de SGBD dans laquelle sont stockés les attributs. Elle peut être spatialisée par l'ajout d'une colonne spatiale. Le nom de la table de base est le nom de la classe d'entités.
Les tables de classes d'entités qui utilisent le stockage de géométrie ou de géographie possèdent également des tables système associées (GDB_ITEMS, SDE_spatial_references, SDE_table_registry, SDE_column_registry, SDE_geometry_columns et SDE_layers), ainsi que les affichages correspondants.
View a diagram of a feature class using SQL Server geometry or geography storage.
Pour ouvrir le fichier, vous devez disposer de Adobe Acrobat Reader.
Les lignes pointillées indiquent des relations implicites entre les colonnes ; les traits pleins indiquent des relations explicites entre les colonnes.
Les vues utilisées pour les classes d'entités géométrie ou géographie, ST_SPATIAL_REFERENCE_SYSTEMS et ST_GEOMETRY_COLUMNS sont absentes du diagramme car elles sont basées sur les tables système SDE_spatial_references et SDE_geometry_columns, déjà présentes dans le diagramme.
Si la classe d'entités est activée pour le stockage d'entités DAO (par exemple les courbes), une table secondaire est créée à cet effet. Toutes les classes d'entités créées à l'aide d'ArcGIS for Desktop sont configurées pour le stockage d'entités DAO. Lors de l'importation ou de l'inscription de données dans ArcSDE à l'aide des commandes d'administration ArcSDE, vous spécifiez si la classe d'entités résultante peut accueillir des données DAO. Le diagramme de classe d'entités affiche également une table DAO nommée SDE_geometry42. Le numéro 42 dans le nom de table fait référence au champ layer_id de la classe d'entités dans la table SDE_layers.
Les jointures ne sont pas activées sur la table DAO secondaire avant l'ajout de données DAO (courbes vraies, par exemple) à la classe d'entités. Une fois les jointures activées, les requêtes sur la classe d'entités comprendront toujours la table DAO secondaire, même si les données DAO ne sont plus présentes.
Classes d'entités stockées au format binaire dans une base de données SQL Server
Les classes d'entités stockées au format binaire (binaire compressé ArcSDE ou représentation binaire connue OGC de la géométrie) dans une géodatabase, dans SQL Server, comprennent une table de base et des tables d'entités et d'index spatial associées, comme décrit ci-dessous.
-
Table de base
La table de base est une table de SGBD dans laquelle sont stockés les attributs. Elle peut être spatialisée par l'ajout d'une colonne spatiale. Le nom de la table de base est le nom de la classe d'entités. Dans l'illustration ci-dessus, la table de base est la table PARCELS.
Dans le cadre d'une implémentation de structure binaire, la colonne spatiale de la table de base (dans l'exemple précédent, le champ SHAPE de la table PARCELS) comprend un identifiant d'entité qui identifie les données spatiales de manière unique. L'identifiant de l'entité relie la table de base aux tables des entités et d'index spatial.
Un déclencheur de base de données est défini pour la table de base spatialisée, afin de conserver la relation entre les enregistrements de la table de base et ceux de la table d'entités.
Toutes les tables de base non versionnées de classe d'entités ont un déclencheur DELETE-UPDATE et un déclencheur INSERT. Le déclencheur INSERT assure l'absence de valeurs dupliquées dans la colonne spatiale de la table de base. Le déclencheur DELETE-UPDATE gère quant à lui l'activité de la colonne spatiale dans la table de base, dans la table d'entités et dans la table d'index spatial.
Ces déclencheurs sont automatiquement supprimés dès lors qu'une classe d'entités est versionnée, qu'elle soit autonome ou qu'elle fasse partie d'un jeu de données d'entités. Ils sont recréés lorsqu'une classe d'entités n'est plus inscrite comme étant versionnée. Si vous modifiez l'un de ces déclencheurs, puis multi-versionnez la classe d'entités, le déclencheur est supprimé.
-
Table des entités (F<ID_couche>)
La table des entités stocke les formes géométriques de chaque entité. Cette table est identifiée par le nombre figurant dans la colonne Layer_ID de la table SDE_layers. La relation entre la table de base et les tables d'entités est gérée par le biais de l'identifiant de l'entité ou FID. Cette clé, conservée par ArcGIS, est unique pour la colonne spatiale.
Définition de la table des entitésNom du champ
Type de champ
Description
Nul ?
fid
entier
Clé primaire ; identifiant unique qui relie la table d'entités à la table de base
NOT NULL
numofpts
entier
Nombre de points qui définissent l'entité
NOT NULL
entity
smallint
Le type de géométrie stocké dans la colonne spatiale (par exemple, point, ligne ou chaîne)
NOT NULL
eminx
réel simple
Valeur x minimale d'une entité ; définit l'enveloppe d'une entité avec eminy, emaxx et emaxy
NOT NULL
eminy
réel simple
Valeur y minimale d'une entité ; définit l'enveloppe d'une entité avec eminx, emaxx et emaxy
NOT NULL
emaxx
réel simple
Valeur x maximale d'une entité ; définit l'enveloppe d'une entité avec eminx, eminy et emaxy
NOT NULL
emaxy
réel simple
Valeur y maximale d'une entité ; définit l'enveloppe d'une entité avec eminx, eminy et emaxx
NOT NULL
eminz
réel simple
Valeur z minimale d'une entité tridimensionnelle
emaxz
réel simple
Valeur z maximale d'une entité tridimensionnelle
min_measure
réel simple
Valeur de mesure minimale d'une entité
max_measure
réel simple
Valeur de mesure maximale d'une entité
surface
réel simple
Surface de la géométrie
NOT NULL
len
réel simple
Périmètre de la géométrie.
NOT NULL
point
varbinarymax
Contient le flux d'octets des coordonnées ponctuelles qui définissent la géométrie
En cours d'insertion ou de mise à jour d'entités, les valeurs de colonnes telles que extents (étendues) et numofpts (nombre de points) sont recalculées automatiquement.
-
Table d'index spatial (S<ID_couche>)
L'index spatial de l'implémentation binaire est la table d'index spatial. Elle stocke des références aux formes à partir d'une grille simple et régulière. Cette table est identifiée par le nombre figurant dans la colonne Layer_ID de la table SDE_layers.
Afin de permettre les requêtes spatiales, l'index spatial contient une entrée pour chaque forme et combinaison de cellules de grille. Une entité qui recoupe trois cellules de grille a trois entrées dans la table. Lors de l'exécution d'une requête spatiale, les cellules de grille de la zone de recherche sont identifiées et renvoyées sous forme de liste de géométries candidates.
Définition de la table d'index spatialNom du champ
Type de champ
Description
Nul ?
sp_fid
entier
Clé primaire ; identifiant unique qui relie la table d'index spatial à la table de base
NOT NULL
gx
bigint
Valeur x de la grille d'index spatial
NOT NULL
gy
bigint
Valeur y de la grille d'index spatial
NOT NULL
eminx
bigint
Valeur x minimale d'une entité ; définit l'enveloppe d'une entité avec eminy, emaxx et emaxy
NOT NULL
eminy
bigint
Valeur y minimale d'une entité ; définit l'enveloppe d'une entité avec eminx, emaxx et emaxy
NOT NULL
emaxx
bigint
Valeur x maximale d'une entité ; définit l'enveloppe d'une entité avec eminx, eminy et emaxy
NOT NULL
emaxy
bigint
Valeur y maximale d'une entité ; définit l'enveloppe d'une entité avec eminx, eminy et emaxx
NOT NULL
Toutes les tables de base de classe d'entités ont un déclencheur DELETE-UPDATE et un déclencheur INSERT. Le déclencheur INSERT assure l'absence de valeurs dupliquées dans la colonne spatiale de la table de base. Le déclencheur DELETE-UPDATE gère quant à lui l'activité de la colonne spatiale dans la table de base, dans la table d'entités et dans la table d'index spatial. Ces déclencheurs sont automatiquement supprimés dès lors qu'une classe d'entités est versionnée, qu'elle soit autonome ou qu'elle fasse partie d'un jeu de données d'entités. Ils sont recréés lorsqu'une classe d'entités n'est plus inscrite comme étant versionnée. Si vous modifiez l'un de ces déclencheurs, puis inscrivez la classe d'entités comme versionnée, le déclencheur sera supprimé. Il est important de préserver l'intégrité référentielle entre la table de base et la table d'entités. Il est déconseillé de modifier les enregistrements de la table d'entité et de la table d'index spatial. Afin de préserver l'intégrité référentielle, plusieurs index et contraintes ont été ajoutés à la table de base, à la table d'entités et à la table d'index spatial. Néanmoins, ces index et contraintes sont supprimés dès lors que la classe d'entités est convertie en mode E/S de chargement seul, état qui permet l'insertion rapide de données dans la classe d'entités.
Lorsque la classe d'entités repasse en mode E/S normal (état qui permet aux utilisateurs d'interroger la classe d'entités via ArcGIS), les index sont créés et les contraintes sont activées. La conversion en mode E/S normal échoue si les index uniques ne peuvent pas être créés à partir de la colonne spatiale de la table de base ou de la colonne FID de la table d'entités. Elle échouera également si une valeur de la colonne spatiale de la table de base est absente de la colonne FID de la table d'entités. Dans ce cas, une référence à l'enregistrement concerné de la table de base est chargée dans la table SDE_EXCEPTIONS.
-
Tables système associées aux classes d'entités
Dans la base de données, la table système GDB_ITEMS est la table principale de suivi des jeux de données de la géodatabase (tels que les classes d'entités et les catalogues d'images).
View a diagram of a feature class using binary storage in SQL Server..
Remarque :Pour ouvrir le fichier, vous devez disposer de Adobe Acrobat Reader.
Les lignes pointillées indiquent des relations implicites entre les colonnes ; les traits pleins indiquent des relations explicites entre les colonnes.
Les champs de nom de base de données des tables GDB_ITMS, SDE_table_registry, SDE_column_registry et SDE_layers contiennent tous la même valeur ; afin d'éviter d'encombrer le diagramme, la relation implicite entre ces champs n'est pas montrée. De même, les champs de propriétaires de toutes ces tables contiennent les mêmes valeurs, bien que ces relations ne soient pas présentées sur le diagramme.
Classes d'entités dans un document XML
Les classes d'entités sont définies au sein des éléments DataElement. Les balises DataElement d'une classe d'entités sont définies sur le type esri:DEFeatureClass. Dans la classe d'entités DataElement, d'autres éléments définissent la classe d'entités, notamment les éléments Field, Domain, ConfigurationKeyword et SpatialReference.
Voici un extrait du contenu d'un document XML pour la classe d'entités Parcels :
<DataElement xsi:type="esri:DEFeatureClass">
<CatalogPath>/V=dbo.DEFAULT/FC=geodata.SASHA.Parcels</CatalogPath>
<Name>geodata.SASHA.Parcels</Name>
<DatasetType>esriDTFeatureClass</DatasetType>
<DSID>22</DSID>
<Versioned>false</Versioned>
<CanVersion>true</CanVersion>
<ConfigurationKeyword/>
<HasOID>true</HasOID>
<OIDFieldName>objectid</OIDFieldName>
<Fields xsi:type="esri:Fields">
<FieldArray xsi:type="esri:ArrayOfField">
<Field xsi:type="esri:Field">
<Name>objectid</Name>
<Type>esriFieldTypeOID</Type>
<IsNullable>false</IsNullable>
<Length>4</Length>
<Precision>10</Precision>
<Scale>0</Scale>
<Required>true</Required>
<Editable>false</Editable>
<AliasName>OBJECTID</AliasName>
<ModelName>OBJECTID</ModelName>
</Field>
Tous les autres éléments qui définissent la classe d'entités
</DataElement>