Inscription d'une table contenant une colonne ST_Geometry dans ArcSDE
Vous pouvez utiliser la commande d'administration ArcSDE sdelayer –o register pour inscrire manuellement une table spatiale dans ArcSDE. Une fois inscrite dans ArcSDE, la table spatiale prend le nom de couche.
ESRI vous recommande de créer des classes d'entités dans ArcGIS. Créer des classes d'entités dans ArcGIS garantit qu'elles sont créées correctement. ESRI comprend toutefois que certains utilisateurs de SQL et développeurs d'applications souhaitent bénéficier d'une autre possibilité lorsqu'ils utilisent des tables spatiales. Par conséquent, ESRI prend en charge l'inscription de tables spatiales externes créées avec SQL ou une application tierce.
N'oubliez pas que pour qu'une table soit inscrite avec ArcSDE, elle doit au moins répondre aux critères suivants :
- Elle doit appartenir à l'utilisateur qui enregistre la table.
- Elle doit comporter une colonne ST_Geometry unique.
- Elle ne doit pas avoir d'autres colonnes d'un type défini par l'utilisateur.
- Elle doit avoir un type de géométrie unique (points, lignes ou polygones)
- Elle doit comporter une colonne de nombres entiers, uniques et de valeur non nulle, appropriée comme colonne d'identifiant d'objet inscrite.
- Tous les enregistrements de la table doivent avoir le même identifiant de référence spatiale (SRID) ou aucun SRID.
- Si vous spécifiez un SRID au moment de l'inscription, il doit être présent dans la géodatabase.
- Son nom ne doit pas associer des lettres majuscules et minuscules, commencer par un chiffre ni dépasser 128 caractères (160 caractères dans Oracle).
Si la table ne contient pas de données et que vous inscrivez la table dans ArcSDE, mais ne spécifiez pas de SRID valide, le SRID par défaut est utilisé. Pour les tables PostgreSQL et Oracle avec des colonnes ST_Geometry, la valeur par défaut est 0. Le SRID 0 est présent principalement dans un objectif de test ; il n'attribue en fait pas de référence spatiale. Si vous essayez ultérieurement d'ajouter des entités qui possèdent un SRID valide différent de 0, l'opération échouera parce que les SRID ne sont pas les mêmes. Une fois qu'un SRID a été attribué à une table, il ne peut pas être modifié ; vous devez supprimer la couche et la recréer avec le SRID correct.
Pour plus d'informations sur l'utilisation de la commande sdelayer, consultez le manuel ArcSDE Administration Command Reference fourni avec le composant ArcSDE d'ArcGIS Server Enterprise.
-
Dans SQL, créez la table comm_bldgs à partir de la classe d'entités buildings que vous avez créée dans la rubrique Workflow : utilisation de SQL avec des classes d'entités existantes. Cela entraîne la création de la table comm_bldgs avec la même définition (comme, par exemple, les mêmes colonnes et types de données) que la classe d'entités buildings.
CREATE TABLE comm_bldgs AS SELECT * FROM buildings WHERE subtype = 'COM';
-
Lorsque vous inscrivez la classe d'entités comm_bldgs dans ArcSDE, vous utilisez le même SRID que celui qui été utilisé pour la classe d'entités buildings. Pour savoir de quel SRID il s'agit, utilisez sdelayer –o describe_long.
Astuce :
Vous pouvez également interroger la table ST_GEOMETRY_COLUMNS dans Oracle, la table geometry_columns dans Informix et DB2, et la table sde_geometry_columns dans PostgreSQL pour obtenir le SRID.
sdelayer –o describe_long –l buildings,shape –u <user> –p <pw> –s <server> [–D <database>] –i <service_or_direct_connect_string> Layer Administration Utility Layer Description : <None> Table Owner : me Table Name : buildings Spatial Column : shape Layer Id : 15 SRID : 3
-
Inscrivez la classe d'entités avec ArcSDE à l'aide de la commande sdelayer. Spécifiez le SRID de la dernière étape à l'aide de l'option –R. Vous pouvez également spécifier l'étendue de la couche à l'aide de l'option -E.
sdelayer –o register –l comm_bldgs,shape –e a -t ST_GEOMETRY –C OBJECTID,SDE –R 3 -E -690.389,-512.144,610.389,600.144 –u <user> –p <pw> –s <server> [–D <database>] –i <service_or_direct_connect_string>
Remarque :Si le paramètre GEOMETRY_STORAGE sous le mot-clé DEFAULTS dans la table DBTUNE n'est pas défini sur ST_GEOMETRY, vous devez également fournir un mot-clé avec l'option -k.
Cette commande a inscrit votre table dans ArcSDE, la transformant en couche. Cela ajoute un enregistrement dans les tables système LAYERS, GEOMETRY_COLUMNS, COLUMN_REGISTRY et TABLE_REGISTRY dans Oracle, DB2 ou Informix, ou dans les tables sde_layers, sde_geometry_columns, sde_column_registry et sde_table_registry dans PostgreSQL. A ce stade, vous êtes en mesure d'afficher, de sélectionner et d'effectuer des mises à jour non versionnées sur la classe d'entités dans ArcGIS Desktop.
Pour utiliser les fonctionnalités de géodatabase dans la classe d'entités, inscrivez-la dans la géodatabase.