Que se passe-t-il lorsque vous créez des classes d'entités avec le stockage de géométries SDO_GEOMETRY ?

Voici les conséquences de la création d'une classe d'entités avec le stockage SDO_GEOMETRY :

Une colonne SDO_GEOMETRY est ajoutée à la table métier de la classe d'entités.

ArcSDE crée une classe d'entités par l'ajout d'une colonne de géométrie à la table métier spécifiée. Si le paramètre GEOMETRY_STORAGE est défini sur SDO_GEOMETRY, ArcSDE ajoute une colonne SDO_GEOMETRY à la table métier.

Dans l'exemple suivant, la table métier comporte des propriétés de nom et de population. Une colonne de géométrie lui ayant été ajoutée, elle comporte également une colonne SDO_GEOMETRY (Borders). Si nécessaire, une colonne d'identifiants uniques d'entités (OBJECTID dans cet exemple) est ajoutée et renseignée.

Nom

Type de données

Nul ?

NOM

VARCHAR2(32)*

POPULATION

NUMBER(11)

FRONTIERES

MDSYS.SDO_GEOMETRY

OBJECTID

NUMBER(38)

NOT NULL

RemarqueRemarque :

*NVARCHAR2(32) remplace VARCHAR2(32) si des chaînes Unicode sont utilisées.

Une colonne de géométrie peut être ajoutée à la table métier à l'aide d'ArcCatalog, à l'aide de l'utilitaire d'administration sdelayer ou avec les interfaces API ArcSDE C et Java.

Un index spatial est créé pour la colonne SDO_GEOMETRY.

Généralement, lorsqu'une colonne SDO_GEOMETRY est ajoutée à une table métier, un index spatial est créé sur cette colonne de géométrie. Par défaut, sur une colonne SDO_GEOMETRY, ArcSDE crée un index d'arborescence R.

ArcSDE peut également créer des classes d'entités sans index spatial. Cependant, les requêtes spatiales ne peuvent pas être prises en charge tant qu'un index spatial n'est pas créé. La fonction SDO_FILTER d'Oracle, utilisée par ArcSDE, nécessite l'existence d'un index spatial.

Vous pouvez créer un index spatial de plusieurs façons : dans ArcCatalog, avec l'utilitaire d'administration sdelayer, avec l'utilitaire Oracle Spatial Index Advisor, au moyen de SQL ou par programmation à l'aide des API ArcSDE C et Java.

ArcSDE supprime et recrée automatiquement les index spatiaux Oracle Spatial créés par ArcSDE, chaque fois qu'une classe d'entités est basculée entre les modes LOAD_ONLY_IO et NORMAL_IO. Les index spatiaux définis par l'application Oracle Spatial Index Advisor ou créés à l'aide de SQL ne sont pas supprimés lorsque ArcSDE bascule la classe d'entités en mode LOAD_ONLY_IO.

Un enregistrement est ajouté à la vue métadonnées d'Oracle Spatial.

Lorsque ArcSDE ajoute une colonne SDO_GEOMETRY à une table métier, il ajoute également l'enregistrement de métadonnées Oracle Spatial nécessaire à la vue USER_SDO_GEOM_METADATA. Ces métadonnées comprennent le nom de table, le nom de colonne SDO_GEOMETRY, l'identifiant de référence spatiale et les informations sur les dimensions des coordonnées.

Si la table, la colonne spatiale et ses métadonnées sont créées à l'aide d'une application tierce ou à l'aide de SQL, puis la table est inscrite dans ArcSDE, ArcSDE ne supprimera pas les métadonnées lors de la désinscription de la table d'ArcSDE. Toutefois, ArcSDE supprimera toujours les métadonnées lors de la suppression de la table, telle qu'effectuée avec la commande sdetable -o delete.

Une dimension de coordonnées est spécifiée.

Vous pouvez créer des géométries ArcSDE aux formats 2D (x,y), 2D avec mesures, 3D (x,y,z) ou 3D avec mesures. Lors de la création de classes d'entités ou de l'ajout d'une colonne SDO_GEOMETRY à une table existante, ArcSDE place les informations de dimension d'Oracle Spatial dans la colonne DIMINFO de la vue métadonnées.

L'identifiant SRID de chaque valeur SDO_GEOMETRY est défini selon le référentiel de coordonnées.

Oracle Spatial propose des référentiels de coordonnées prédéfinis dans la table MDSYS.CS_SRS. Lors de la création d'une classe d'entités à l'aide d'ArcSDE, afin de définir un identifiant SRID spécifique pour la colonne SDO_GEOMETRY, identifiez la description du référentiel de coordonnées d'Oracle Spatial approprié, puis définissez le paramètre de stockage SDO_SRID DBTUNE de la classe d'entités sur cette valeur.

Par exemple :

#MY_SDO_KEYWORD
GEOMETRY_STORAGE SDO_GEOMETRY
SDO_SRID 8307
UI_TEXT "MY_SDO_KEYWORD"
END

Si le paramètre de stockage SDO_SRID n'est pas défini, ArcSDE définit l'identifiant SRID de chaque valeur SDO_GEOMETRY sur NULL, de même que l'identifiant SRID de l'enregistrement de métadonnées correspondant.

ArcSDE n'exige pas l'identifiant SRID d'Oracle Spatial. ArcSDE conserve les informations de référentiel de coordonnées de chaque classe d'entités dans sa propre table SPATIAL_REFERENCES, indépendamment d'Oracle Spatial. Reportez-vous à votre Guide de l'utilisateur Oracle Spatial pour plus d'informations sur les référentiels de coordonnées pris en charge.

La colonne SDO_GEOMETRY est renseignée.

Lors du stockage de géométrie dans la base de données, ArcSDE renseigne la valeur SDO_GEOMETRY à partir d'un objet de l'interface API ArcSDE nommé SE_SHAPE. L'objet SE_SHAPE peut contenir des géométries simples ou complexes, y compris des altitudes, des mesures, des données DAO, des annotations et des faces surfaciques. Le type de données SDO_GEOMETRY prend en charge un sous-ensemble de ces propriétés géométriques. Du fait qu'il n'existe pas de correspondance (mappage) un à un entre les composants des objets SDO_GEOMETRY et SE_SHAPE, ArcSDE applique un ensemble de règles lors du stockage de données ArcSDE dans les tables spatiales Oracle :

RemarqueRemarque :

ArcSDE ne prend pas en charge les ensembles de géométries hétérogènes dans l'objet SDO_GEOMETRY, et ArcSDE ne code pas d'éléments SDO_ETYPE 0 dans l'objet SDO_GEOMETRY. Les éléments SDO_ETYPE 0 sont spécifiques à l'application.

Une colonne supplémentaire est ajoutée à la table métier en cas de stockage de propriétés DAO et d'annotations.

Le type SDO_GEOMETRY ne peut pas stocker tous les types d'éléments géométriques que le stockage ArcSDE doit prendre en charge. Lorsque le stockage de ces éléments est nécessaire (comme indiqué par les balises de type de géométrie spécifiées lors de la création de la classe d'entités), ArcSDE ajoute une colonne appelée SE_ANNO_CAD_DATA à la table métier. Avec l'exemple de classe d'entités donnée dans la première section de cette rubrique, la table métier contiendrait maintenant les éléments suivants :

Nom

Type de données

Nul ?

NOM

VARCHAR2(32)*

POPULATION

NUMBER(11)

FRONTIERES

MDSYS.SDO_GEOMETRY

SE_ANNO_CAD_DATA

BLOB

OBJECTID

NUMBER(38)

NOT NULL

RemarqueRemarque :

*NVARCHAR2(32) remplace VARCHAR2(32) si des chaînes Unicode sont utilisées.

Chaque fois qu'ArcSDE détecte que la source de données contient des données DAO, ArcSDE écrit une représentation géométrique simple des données DAO dans la valeur SDO_GEOMETRY et écrit les données DAO non modifiées dans la valeur SE_ANNO_CAD_DATA. Si la source de données ne contient pas de données DAO, ArcSDE définit la valeur SE_ANNO_CAD_DATA sur NULL. La propriété SE_ANNO_CAD_DATA contient des données issues de nombreux composants ArcGIS :

Les requêtes spatiales sur la classe d'entités sont exécutées à l'aide des fonctions de filtrage d'Oracle Spatial.

ArcSDE utilise la fonction SDO_FILTER d'Oracle Spatial pour exécuter la requête spatiale primaire. ArcSDE exécute un filtrage secondaire de SDO_GEOMETRY basé sur la relation spatiale demandée par l'application.

Les applications peuvent également inclure des fonctions de filtrage primaire et secondaire d'Oracle Spatial dans la clause SQL WHERE fournie à ArcSDE. A l'aide des filtres spatiaux inclus dans la clause WHERE, les applications peuvent distribuer la requête spatiale au serveur de base de données, au serveur d'applications ArcSDE et à l'application elle-même.


3/6/2012