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 dans une géodatabase :

Une table avec une colonne SDO_GEOMETRY est créée.

Si vous spécifiez un mot-clé de configuration DBTUNE avec le paramètre GEOMETRY_STORAGE défini sur SDO_GEOMETRY lorsque vous créez une classe d'entités dans une géodatabase dans Oracle, ArcGIS utilise une colonne SDO_GEOMETRY pour le champ de forme.

La classe d'entités d'exemple suivante a un champ d'identifiant unique (IdObjet), des attributs de nom et de population et une colonne de forme SDO_GEOMETRY.

Nom

Type de données

Nul ?

NOM

VARCHAR2(32)*

POPULATION

NUMBER(11)

SHAPE

MDSYS.SDO_GEOMETRY

OBJECTID

NUMBER(38)

NOT NULL

RemarqueRemarque :

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

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

ArcGIS crée un index spatial d'arborescence R dans la colonne SDO_GEOMETRY d'une classe d'entités par défaut. ArcGIS utilise la fonction SDO_FILTER d'Oracle pour réaliser des requêtes spatiales sur la classe d'entités. Par conséquent, un index spatial est requis pour les requêtes spatiales.

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 crée une classe d'entités contenant une colonne SDO_GEOMETRY, l'enregistrement de métadonnées Oracle Spatial nécessaire est ajouté à 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.

Lorsque vous utilisez ArcGIS pour supprimer la classe d'entités, les métadonnées d'Oracle Spatial sont également supprimées.

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 (x,y,m), 3D (x,y,z) ou 3D avec mesures (x,y,z,m). Lors de la création de classes d'entités avec une colonne SDO_GEOMETRY, ArcGIS place les informations de dimension d'Oracle Spatial dans la colonne DIMINFO de la vue de métadonnées.

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 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)

SHAPE

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.

5/10/2014