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 Desktop
Il existe sept types de classes d'entités que vous pouvez créer dans ArcGIS 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 |
|
Cote |
|
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 parcelles, 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 des 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 (également appelée "table métier"), qui stocke des informations attributaires, un identifiant d'objet et un champ Shape. L'identifiant d'objet et les champs Shape 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 de type annotation ou cotation présentent des champs obligatoires supplémentaires dans leurs tables de base. Pour obtenir une liste de ces champs, consultez les rubriques Gestion des propriétés des classes d'entités annotations et Propriétés d'entité cotation.
Suite au chargement de données ou à l'exécution de la commande sdesetup, votre base de données comporte plusieurs tables i et procédures stocké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 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) d'une géodatabase dans SQL Server se composent d'une table de base et de tables d'entités et d'index spatiaux associées, comme décrit ci-dessous.
Par défaut, les entités sont stockées à l'aide du type binaire compressé ArcSDE.
-
Table de base
La table de base est une table de SGBD dans laquelle sont stockés les attributs, 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 de la 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 des 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 l'activité de la colonne spatiale dans la table de base, la table des entités et la table d'index spatial.
Ces déclencheurs sont automatiquement supprimés dès lors qu'une classe d'entités, autonome ou partie d'un jeu de classes d'entités, est multi-versionnée. Ils sont recréés quand une classe d'entités est désinscrite comme 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 tables de base et des entités est gérée par le biais de l'identifiant d'entité, ou FID. Cette clé conservée par ArcSDE 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 des entités à la table de base
non 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
non NULL
gx
bigint
Valeur x de la grille d'index spatial
non 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
non 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 l'activité de la colonne spatiale dans la table de base, la table des entités et la table d'index spatial. Ces déclencheurs sont automatiquement supprimés dès lors qu'une classe d'entités, autonome ou partie d'un jeu de classes d'entités, est multi-versionnée. Ils sont recréés quand une classe d'entités est désinscrite comme 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 conserver l'intégrité référentielle entre la table de base et la table des entités. Il est déconseillé de modifier les enregistrements de la table d'entité et de la table d'index spatial. Afin de garantir l'intégrité référentielle, plusieurs index et contraintes ont été ajoutés à la table de base, à la table des 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 des 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 des 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_ITEMS, 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 stockées avec le type de géométrie ou de géographie de Microsoft dans une base de données SQL Server
Dans ArcGIS 9.3 et versions ultérieures, les géodatabases stockées dans une base de données SQL Server 2008 peuvent utiliser le type de géométrie ou de géographie de Microsoft pour le stockage d'entités. Les classes d'entités utilisant l'un de ces types de stockage disposent également d'une table de base, comme décrit dans la section précédente. Toutefois, pour ces types de stockage, la table de base contient une colonne de type GEOMETRY ou GEOGRAPHY pour le stockage de la géométrie des classes d'entités ; il n'existe aucune table des entités associée.
Les tables de classes d'entités utilisant le stockage de géométrie ou de géographie disposent également de tables système et de vues associées.
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 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 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>