Exemple : Création de vues spatiales dans Oracle à l'aide de la commande sdetable
Vous pouvez créer des vues spatiales à l'aide de la commande sdetable en incluant la colonne spatiale dans la liste de colonnes spécifiées avec l'option –c. La vue spatiale que vous créez à l'aide de la commande sdetable est inscrite en tant que table dans ArcSDE. Pour inscrire la vue en tant que couche, utilisez la commande sdelayer.
Cet exemple illustre la création d'une vue spatiale intégrant des colonnes d'une classe d'entités et d'une table non spatiale, à l'aide de la commande sdetable. Des privilèges d'accès sont accordés. La vue est ensuite inscrite en tant que couche avec ArcSDE.
Créer une vue spatiale
L'exemple suivant présente la jointure de la table "employees" avec la classe d'entités "regions". Les tables sont jointes sur l'identifiant de ligne emp_id qui existe dans les deux tables.
sdetable -o create_view -T emp_region_view -t "employees,world.regions" -c "employees.name,employees.emp_id,world.regions.reg_id,world.regions.rname,world.regions.region" -a "employee,eid,rid,region,area" -w "employees.emp_id = world.regions.emp_id" -s myodbserver -i sde:oracle11g:ora1 -u gdb -p gdb.bdg
Si l'utilisateur connecté n'est pas propriétaire des tables, le nom doit être dans le format owner.table. Lorsque vous utilisez plusieurs tables, vous devez qualifier les noms de chaque colonne répertoriée après –c avec le nom de la table en utilisant le format table.column ou owner.table.column.
Pour utiliser des tables qui sont dans une géodatabase dans la structure d'un utilisateur, spécifiez la géodatabase dont l'utilisateur est propriétaire avec l'option –D.
Dans cet exemple, comme la vue comprend des colonnes issues de deux tables différentes, les noms des tables sont assez longs. L'option –a permet alors d'attribuer des alias aux colonnes. Toutefois, l'utilisation d'alias n'est nécessaire que si les noms des colonnes incluses dans la vue sont ambigus. Par exemple, si vous créez une vue entre deux tables et que vous incluez les noms de colonnes des deux tables, vous devez attribuer un alias aux colonnes pour qu'elles portent des noms distincts. Si vous utilisez l'option –a pour attribuer un alias aux noms de colonnes, les colonnes et l'ordre dans lequel elles sont répertoriées doivent être identiques dans les listes –c et –a.
reg_id est la colonne de nombres entiers de valeur non nulle issue de la classe d'entités de régions qui sert d'identifiant de ligne dans ArcSDE. "Region" est la colonne spatiale issue de la classe d'entités de régions.
L'utilisateur gdb doit au moins disposer de privilèges Select sur la classe d'entités de régions pour l'inclure dans la définition emp_region_view.
La vue est maintenant inscrite en tant que table avec ArcSDE (une entrée est créée dans la table système TABLE_REGISTRY). La vue apparaîtra en tant que table si elle est affichée par le biais d'ArcGIS Desktop.
Accorder des privilèges sur la vue
Vous pouvez utiliser SQL ou la commande sdetable pour accorder des privilèges sur une vue.
Dans la rubrique Exemple : Création d'une vue spatiale dans Oracle avec SQL et inscription, SQL sert à accorder des privilèges sur la vue. Dans cet exemple, la commande sdetable est utilisée avec l'opération grant.
sdetable -o grant -t emp_region_view -U dispatch1 -A SELECT -s myodbserver -i sde:oracle11g:ora1 -u gdb -p gdb.bdg -I
L'option –I est incluse pour permettre à l'utilisateur "dispatch1" d'accorder des privilèges sur la vue à d'autres utilisateurs.
Inscrire la vue en tant que couche
La vue créée avec la commande sdetable a été inscrite en tant que table avec ArcSDE. Pour afficher la vue en tant que couche, vous devez l'inscrire à l'aide de la commande sdelayer.
sdelayer -o register -l emp_region_view,region -e a -C reg_id,USER -t ST_GEOMETRY -E 2.20,2.20,3.01,3.01 -R 1 -s myodbserver -i sde:oracle11g:ora1 -u gdb -p gdb.bdg
Les valeurs des options que vous spécifiez, à l'exception de –o, dépendent de vos données.
Pour plus d'informations sur les commandes sdelayer et sdetable, consultez le manuel Administration Command Reference.