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.

ArcGIS 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, ArcGIS 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, ArcGIS crée un index d'arborescence R.

ArcGIS 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'aucun index spatial n'est créé. La fonction SDO_FILTER d'Oracle, utilisée par ArcGIS, 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.

ArcGIS supprime et recrée automatiquement les index spatiaux Oracle Spatial créés par ArcGIS, 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 lorsqu'ArcGIS bascule la classe d'entités en mode LOAD_ONLY_IO.

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

Lorsqu’ArcGIS 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, et que la table est enregistrée dans ArcSDE via l’outil de ligne de commande sdelayer, ArcSDE ne supprime 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 ArcGIS 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, ArcGIS place les informations de dimension d'Oracle Spatial dans la colonne DIMINFO de la vue de 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'ArcGIS, 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, ArcGIS 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.

ArcGIS ne nécessite aucun identifiant SRID Oracle Spatial. Il 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 géodatabase, ArcGIS 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, ArcGIS applique un ensemble de règles lors du stockage de données dans les tables spatiales Oracle :

RemarqueRemarque :

ArcGIS ne prend pas en charge les ensembles de géométries hétérogènes dans l'objet SDO_GEOMETRY et ArcGIS 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 ArcGIS 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), ArcGIS 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'il détecte que la source de données contient des données DAO, ArcGIS é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, ArcGIS 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.

ArcGIS utilise la fonction SDO_FILTER d'Oracle Spatial pour exécuter la requête spatiale primaire. ArcGIS 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 à ArcGIS. 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.

9/12/2013