Paramètres de stockage d'Oracle Spatial DBTUNE
Les paramètres de stockage d'Oracle Spatial étant différents de ceux des autres bases de données Oracle utilisées avec ArcSDE, cette rubrique présente des exemples d'utilisation des paramètres de stockage utilisés avec Oracle Spatial, ainsi que des descriptions.
Création de tables métier
ArcSDE utilise les paramètres de stockage B_STORAGE, B_INDEX_ROWID et B_INDEX_USER pour stocker la table métier et les index non spatiaux dans cette table.
Création de métadonnées Oracle Spatial pour de nouvelles classes d'entités
La vue de base de données USER_SDO_GEOM_METADATA fait partie d'Oracle Spatial mais pas d'ArcSDE. Elle contient des métadonnées concernant les colonnes SDO_GEOMETRY dans les tables existantes que l'utilisateur possède. Chaque utilisateur dispose d'une vue USER_SDO_GEOM_METADATA qui lui est propre. Le propriétaire de la table doit enregistrer les métadonnées pour chaque colonne SDO_GEOMETRY dans USER_SDO_GEOM_METADATA afin qu'elles puissent être indexées et interrogées. Les clients ArcSDE qui créent une classe d'entités choisissent les métadonnées de la classe d'entités. Souvent, ces clients acceptent un mot-clé de configuration qui correspond à un groupe de paramètres dans la table DBTUNE.
Les paramètres de stockage qui contrôlent les métadonnées pour les nouvelles classes d'entités Oracle Spatial sont les suivants :
SDO_DIMNAME_<n> SDO_LB_<n> SDO_UB_<n> SDO_TOLERANCE_<n> SDO_SRID
Si le mot-clé de configuration spécifié lors de la création d'une classe d'entités contient le paramètre SDO_SRID défini sur un système de référence de coordonnée valide, la valeur SDO_SRID est utilisée et écrite dans la vue USER_SDO_GEOM_METADATA, même si un système de référence de coordonnée différent est fourni par le client.
Oracle Spatial autorise des géométries d'entités de deux, trois ou quatre dimensions pouvant être combinées comme suit : x/y, x/y/z, x/y/m (mesure) ou x/y/z/m. Grâce à ces paramètres de stockage, ArcSDE vous permet de spécifier les métadonnées de chaque dimension. <n> dans le nom de certains paramètres doit être remplacé par l'un des chiffres (1, 2, 3 ou 4) correspondant au numéro de la dimension. Si vous ne fournissez pas ces paramètres de stockage, l'application ArcSDE cliente qui crée la classe d'entités détermine le nom, la limite supérieure et inférieure (étendue) et la tolérance de chaque dimension.
Oracle Spatial autorise également les géométries d'entité de x/y/m/z ; toutefois, ne les utilisez pas avec ArcSDE.
Création d'un index spatial
Le paramètre SDO_INDEX_SHAPE de la table DBTUNE détermine comment Oracle Spatial crée l'index spatial. ArcSDE ajoute le contenu de ce paramètre (la chaîne de configuration) à l'instruction CREATE INDEX avant de soumettre celle-ci à Oracle. La chaîne de configuration est insérée dans l'instruction SQL après le mot-clé PARAMETERS. Par exemple :
CREATE INDEX MY_SP_INDEX ON MY_SP_TABLE(SHAPE) INDEXTYPE IS MDSYS.SPATIAL_INDEX PARAMETERS ( <configuration string is inserted here> );
La chaîne de configuration est une chaîne entre guillemets qui contient une liste de paramètres = éléments de valeur. Vous pouvez spécifier de nombreux paramètres dans la chaîne de configuration. Pour comprendre les paramètres d'index Oracle Spatial et comment ils interagissent, lisez les sections correspondantes dans le Guide de l'utilisateur Oracle Spatial.
Observez les différences entre les paramètres de stockage physique dans la chaîne de configuration de l'index spatial et dans une chaîne de configuration de la table métier (comme spécifié dans B_STORAGE). L'une des différences vient de la manière dont Oracle s'attend à ce que ces paramètres apparaissent dans les instructions SQL. Etant donné que les instructions Oracle sont mises en forme différemment, les chaînes de configuration sont mises en forme différemment. De plus, tous les paramètres de stockage physique utilisés pour créer des tables ne sont pas disponibles pour créer des index spatiaux.
B_STORAGE "TABLESPACE ORSPBIZ PCTFREE 10 INITRANS 4 STORAGE(INITIAL 512000)" SDO_INDEX_SHAPE "tablespace=ORSPIDX initial=512000"
Exemples de groupes de paramètres DBTUNE pour les classes d'entités Oracle Spatial
Cette section présente les groupes de paramètres DBTUNE qui s'appliquent à plusieurs scénarios communs. (Rappelez-vous que les paramètres sont regroupés par mots-clé de configuration.) Ces exemples montrent l'importance des paramètres de stockage pour les classes d'entités Oracle Spatial.
Oracle et ESRI recommandent d'utiliser des index spatiaux R-tree avec le stockage SDO_GEOMETRY. Certains des exemples suivants utilisent le paramètre sdo_indx_dims=2, qui indique combien de dimensions doivent être indexées avec un index spatial R-tree. Avec Oracle 9.2, la valeur par défaut est 2, soit les deux premières dimensions (x et y). Dans les versions antérieures d'Oracle, la valeur par défaut était le nombre de dimensions enregistrées dans USER_SDO_GEOM_METADATA. Divers problèmes se posaient lors de la création d'index spatiaux R-tree sur les dimensions autres que x et y. Par exemple, Oracle ne prend pas en charge les index R-tree sur la dimension de mesure. Si vous créez des index spatiaux R-tree et utilisez une version d'Oracle avant 9.2, nous vous recommandons d'inclure toujours ce paramètre.
Si vous n'utilisez pas Oracle Spatial par défaut, vous pouvez constituer un groupe de paramètres simple pour créer des classes d'entités Oracle Spatial avec la plupart des paramètres par défaut. Les tables et index sont créés dans le tablespace par défaut de l'utilisateur à l'aide des paramètres de stockage physique par défaut, sauf indication contraire dans le groupe de paramètres DEFAULTS. L'index spatial est, quant à lui, un index R-tree bidimensionnel.
##SDO_GEOMETRY GEOMETRY_STORAGE "SDO_GEOMETRY" SDO_INDEX_SHAPE "sdo_indx_dims=2" UI_TEXT "Oracle Spatial: default settings" END
Avec Oracle Spatial, si des données sont souvent chargées à l'aide d'un identifiant de référence spatiale spécifique (SRID), tel que le SRID 8307 (latitude/longitude WGS84) géodésique, vous pouvez créer une version étendue du groupe de paramètres précédent. Il n'est pas nécessaire de spécifier les limites supérieure et inférieure et la tolérance, mais vous le pouvez si vous voulez que toutes vos classes d'entités contiennent les mêmes métadonnées pour les dimensions x et y. Ceci est utile si vous voulez utiliser les classes d'entités dans le même jeu de classes d'entités. Cet exemple montre aussi que tous les contours de polygone avec rotation inversée seront réorganisés avant d'être envoyés aux clients ArcSDE.
Avec les données géodésiques d'Oracle9i, les étendues sont spécifiées en degrés décimaux et les tolérances en mètres.
##SDO_GEOMETRY_8307 GEOMETRY_STORAGE "SDO_GEOMETRY" SDO_INDEX_SHAPE "sdo_indx_dims=2" SDO_SRID 8307 SDO_DIMNAME_1 "Lon" SDO_LB_1 -180.000000 SDO_UB_1 180.000000 SDO_TOLERANCE_1 0.05 SDO_DIMNAME_2 "Lat" SDO_LB_2 -90.000000 SDO_UB_2 90.000000 SDO_TOLERANCE_2 0.05 UI_TEXT "Oracle Spatial: WGS84" END
L'exemple suivant peut être utilisé pour charger une classe d'entités avec un index spatial R-tree dans le tablespace ORSPBIZ. L'index spatial R-tree est créé dans le tablespace ORSPIDX. Le client ArcSDE qui charge les données détermine les valeurs des métadonnées.
##SDO_GEOMETRY_ORSPBIZ GEOMETRY_STORAGE "SDO_GEOMETRY" B_STORAGE "TABLESPACE ORSPBIZ" SDO_INDEX_SHAPE "tablespace=ORSPIDX sdo_indx_dims=2" UI_TEXT "Tablespace ORSPBIZ / ORSPIDX" END
L'exemple suivant peut être utilisé pour charger une classe d'entités avec un index spatial Quadtree dont le niveau de tuilage à taille fixe (niveau de mosaïque) est 6. L'index spatial est créé dans le tablespace ORSPIDX.
L'intervalle de validation est important pour les index Quadtree, mais ignoré pour les index spatiaux R-tree. Il indique le nombre d'enregistrements de la table métier qui sont traités avant de valider les données d'index. Sans lui, tous les enregistrements de la table métier sont traités avant de valider les données d'index. Cela entraîne des problèmes lors de l'indexation de tables comportant un grand nombre d'enregistrements.
L'importance du paramètre sdo_commit_interval est telle qu'ArcSDE l'inclut automatiquement dans les instructions d'indexation SQL pour les tables Oracle Spatial, même si vous ne précisez pas qu'il fait partie du paramètre SDO_INDEX_SHAPE. Il est paramétré sur la valeur 1 000.
##SDO_GEOMETRY_QT_6 GEOMETRY_STORAGE "SDO_GEOMETRY" SDO_INDEX_SHAPE "tablespace=ORSPIDX sdo_level=6 sdo_commit_interval=1000" END
Quand vous concevez vos propres groupes de paramètres, vous pouvez ajouter des paramètres pour prendre en charge d'autres constructions de géodatabases, telles que les réseaux géométriques ou les MNT. Vous pouvez également satisfaire ces besoins en définissant des paramètres dans le groupe de paramètres DEFAULTS.
Par exemple, si le paramètre GEOMETRY_STORAGE du mot-clé DEFAULTS est défini sur SDO_GEOMETRY, lorsque vous créez des topologies, des réseaux ou des MNT, les mots-clés composites par défaut de ceux-ci sont utilisés. Etant donné que les mots-clés composites par défaut ne spécifient pas GEOMETRY_STORAGE, le paramètre GEOMETRY_STORAGE de DEFAULTS est utilisé ; dans le cas présent, il s'agit de SDO_GEOMETRY.
Si, au contraire, le mot-clé DEFAULTS GEOMETRY_STORAGE n'est pas défini sur SDO_GEOMETRY mais que vous voulez créer, par exemple, un MNT qui utilise le stockage SDO_GEOMETRY, vous devez créer un nouvel ensemble de mots-clés de MNT conçu pour stocker des MNT avec le stockage SDO_GEOMETRY. Cet exemple illustre le résultat dans le fichier dbtune.sde :
##TERRAIN_SDO UI_TERRAIN_TEXT "The terrain default configuration" GEOMETRY_STORAGE "SDO_GEOMETRY" B_STORAGE "PCTFREE 0 INITRANS 4 TABLESPACE ter_tblspc" B_INDEX_ROWID "PCTFREE 0 INITRANS 4 TABLESPACE ter_tblspc NOLOGGING" B_INDEX_SHAPE "PCTFREE 0 INITRANS 4 TABLESPACE ter_tblspc NOLOGGING" B_INDEX_USER "PCTFREE 0 INITRANS 4 TABLESPACE ter_tblspc NOLOGGING" END ##TERRAIN_SDO::EMBEDDED GEOMETRY_STORAGE "SDO_GEOMETRY" B_STORAGE "PCTFREE 0 INITRANS 4 TABLESPACE ter_tblspc" B_INDEX_ROWID "PCTFREE 0 INITRANS 4 TABLESPACE ter_tblspc NOLOGGING" B_INDEX_SHAPE "PCTFREE 0 INITRANS 4 TABLESPACE ter_tblspc NOLOGGING" B_INDEX_USER "PCTFREE 0 INITRANS 4 TABLESPACE ter_tblspc NOLOGGING" END