Workflow : création de tables avec SQL et inscription avec ArcSDE et la géodatabase

Cette rubrique concerne exclusivement ArcEditor et ArcInfo.

Complexité : Intermédiaire Exigences relatives aux données : Utilisez vos propres données Objectif : Créez des tables spatiales et non spatiales avec SQL, inscrivez les tables dans ArcSDE, puis inscrivez-les dans la géodatabase.

Vous pouvez utiliser SQL pour créer des tables. Si la table contient une colonne spatiale, la table est considérée comme table spatiale. Vous pouvez utiliser SQL pour renseigner les tables spatiales et non spatiales avec des données. Ensuite, pour utiliser les fonctionnalités d'ArcSDE et de géodatabase, vous pouvez inscrire la table dans ArcSDE et la géodatabase.

Vous pouvez procéder ainsi si vous utilisez une application personnalisée pour créer des tables spatiales ou non spatiales ou pour recevoir des tables de base de données d'une autre agence ou d'un prestataire, mais que vous voulez bénéficier des avantages des fonctionnalités de géodatabase et d'ArcGIS.

Création d'une table non spatiale avec SQL

Étapes :
  1. Ouvrez un client SQL et connectez-vous à la base de données en tant qu'utilisateur avec les autorisations requises pour créer des tables dans la base de données.
  2. Utilisez une instruction SQL CREATE TABLE pour créer une table non spatiale, nommée patients, qui contient des colonnes avec les noms suivants : PID, f_name, l_name et dwel_id.

    Oracle

    CREATE TABLE patients 
    (PID integer NOT NULL, f_name nvarchar2(25), l_name nvarchar2(38), dwel_id integer);
    

    PostgreSQL

    CREATE TABLE patients 
    (PID integer NOT NULL UNIQUE, f_name varchar(25), l_name varchar(38), dwel_id integer);

    DB2

    CREATE TABLE patients 
    (PID integer NOT NULL, f_name varchar(25), l_name varchar(38), dwel_id integer);

    Informix

    CREATE TABLE patients 
    (PID integer NOT NULL, f_name varchar(25), l_name varchar(38), dwel_id integer);
    

Ajout des données à une table non spatiale avec SQL

Utilisez les instructions INSERT SQL pour ajouter des enregistrements à la table patients avec SQL.

Étapes :
  1. Insérez quatre enregistrements dans la table patients.

    Oracle

    INSERT INTO PATIENTS (PID, f_name, l_name, dwel_id)
    VALUES (1, 'wolfgang', 'bruker', 4301);
    
    INSERT INTO PATIENTS (PID, f_name, l_name, dwel_id)
    VALUES (2, 'ida', 'pastens', 4301);
    
    INSERT INTO PATIENTS (PID, f_name, l_name, dwel_id)
    VALUES (3, 'ricardo', 'montoya', 1001);
    
    INSERT INTO PATIENTS (PID, f_name, l_name, dwel_id)
    VALUES (4, 'tukufu', 'endel', 9601);

    PostgreSQL

    INSERT INTO patients (PID, f_name, l_name, dwel_id)
    VALUES (1, 'wolfgang', 'bruker', 4301);
    
    INSERT INTO patients (PID, f_name, l_name, dwel_id)
    VALUES (2, 'ida', 'pastens', 4301);
    
    INSERT INTO patients (PID, f_name, l_name, dwel_id)
    VALUES (3, 'ricardo', 'montoya', 1001);
    
    INSERT INTO patients (PID, f_name, l_name, dwel_id)
    VALUES (4, 'tukufu', 'endel', 9601);

    DB2

    INSERT INTO PATIENTS (PID, f_name, l_name, dwel_id)
    VALUES (1, 'wolfgang', 'bruker', 4301);
    
    INSERT INTO PATIENTS (PID, f_name, l_name, dwel_id)
    VALUES (2, 'ida', 'pastens', 4301);
    
    INSERT INTO PATIENTS (PID, f_name, l_name, dwel_id)
    VALUES (3, 'ricardo', 'montoya', 1001);
    
    INSERT INTO PATIENTS (PID, f_name, l_name, dwel_id)
    VALUES (4, 'tukufu', 'endel', 9601);

    Informix

    INSERT INTO patients (PID, f_name, l_name, dwel_id)
    VALUES (1, 'wolfgang', 'bruker', 4301);
    
    INSERT INTO patients (PID, f_name, l_name, dwel_id)
    VALUES (2, 'ida', 'pastens', 4301);
    
    INSERT INTO patients (PID, f_name, l_name, dwel_id)
    VALUES (3, 'ricardo', 'montoya', 1001);
    
    INSERT INTO patients (PID, f_name, l_name, dwel_id)
    VALUES (4, 'tukufu', 'endel', 9601);

Création d'une table spatiale avec SQL

Vous pouvez également utiliser une instruction CREATE TABLE pour créer une table avec une colonne spatiale.

Étapes :
  1. Créez une table, nommée outbreaks, qui contient un nombre entier OID, un nombre entier dwel_id, une chaîne d'adresse, un nombre entier city_code et une colonne d'emplacement ST_Geometry.

    Oracle

    CREATE TABLE outbreaks 
    (OID integer NOT NULL, address nvarchar2(120), city_code integer, location sde.st_geometry); 

    PostgreSQL

    CREATE TABLE outbreaks 
    (OID integer NOT NULL UNIQUE, address varchar(120), city_code integer, location sde.st_geometry); 

    DB2

    CREATE TABLE outbreaks 
    (OID integer NOT NULL, address nvarchar2(120), city_code integer, location st_geometry); 

    Informix

    CREATE TABLE outbreaks 
    (OID integer NOT NULL UNIQUE, address varchar(120), city_code integer, location st_geometry); 

Ajout de données à une table spatiale avec SQL

Insérez trois enregistrements dans la table outbreaks.

RemarqueRemarque :

La valeur 0 dans ces instructions d'exemple est le SRID. Vous pouvez spécifier un nombre différent.

Étapes :
  1. Utilisez des instructions SQL INSERT et la fonction ST_Point pour ajouter des enregistrements à la table outbreaks.

    Oracle

    INSERT INTO OUTBREAKS (OID, address, city_code, location)
    VALUES (1, 
    '1420 kirchestrasse', 
    43, 
    sde.st_point (0.00003, 0.00051, 0)
    );
    
    INSERT INTO OUTBREAKS (OID, address, city_code, location)
    VALUES (2, 
    '638 villa arbol', 
    10, 
    sde.st_point (0.00020, -0.00029, 0)
    );
    
    INSERT INTO OUTBREAKS (OID, address, city_code, location)
    VALUES (3, 
    '5579 riverview dr', 
    96, 
    sde.st_point (-0.00048, -0.00009, 0)
    );
    

    PostgreSQL

    INSERT INTO outbreaks (OID, address, city_code, location)
    VALUES (1, 
    '1420 kirchestrasse', 
    43, 
    sde.st_point (0.00003, 0.00051, 0)
    );
    
    INSERT INTO outbreaks (OID, address, city_code, location)
    VALUES (2, 
    '638 villa arbol', 
    10, 
    sde.st_point (0.00020, -0.00029, 0)
    );
    
    INSERT INTO outbreaks (OID, address, city_code, location)
    VALUES (3, 
    '5579 riverview dr', 
    96, 
    sde.st_point (-0.00048, -0.00009, 0)
    );

    DB2

    INSERT INTO OUTBREAKS (OID, address, city_code, location)
    VALUES (1, 
    '1420 kirchestrasse', 
    43, 
    st_point (0.00003, 0.00051, 0)
    );
    
    INSERT INTO OUTBREAKS (OID, address, city_code, location)
    VALUES (2, 
    '638 villa arbol', 
    10, 
    st_point (0.00020, -0.00029, 0)
    );
    
    INSERT INTO OUTBREAKS (OID, address, city_code, location)
    VALUES (3, 
    '5579 riverview dr', 
    96, 
    st_point (-0.00048, -0.00009, 0)
    );

    Informix

    INSERT INTO outbreaks (OID, address, city_code, location)
    VALUES (1, 
    '1420 kirchestrasse', 
    43, 
    st_point (0.00003, 0.00051, 0)
    );
    
    INSERT INTO outbreaks (OID, address, city_code, location)
    VALUES (2, 
    '638 villa arbol', 
    10, 
    st_point (0.00020, -0.00029, 0)
    );
    
    INSERT INTO outbreaks (OID, address, city_code, location)
    VALUES (3, 
    '5579 riverview dr', 
    96, 
    st_point (-0.00048, -0.00009, 0)
    );

Inscription de tables non spatiales dans ArcSDE

Les tables non spatiales sont inscrites dans ArcSDE à l'aide de la commande sdetable. Une fois inscrite, un enregistrement correspondant à la table est ajouté à la table système TABLE_REGISTRY. Des enregistrements sont également ajoutés à la table système COLUMN_REGISTRY pour chaque colonne de la table.

Les options illustrées dans ces exemples indiquent les éléments suivants :

Étapes :
  1. Modifiez les répertoires sur SDEHOME > bin.
  2. Utilisez la commande sdetable avec l'opération register pour inscrire la table patients dans ArcSDE.

    Oracle

    sdetable -o register -t patients -c PID -C SDE -i sde:oracle11g 
    -s server1 -u creator -p powerup

    PostgreSQL

    sdetable -o register -t patients -c PID -C SDE -i sde:postgresql:server1 
    -D postdb -s server1 -u creator -p powerup

    DB2

    sdetable -o register -t patients -c PID -C SDE -i sde:db2 
    -D db2db -s server1 -u creator -p powerup

    Informix

    sdetable -o register -t patients -c PID -C SDE -i sde:informix 
    -D idsdb -s server1 -u creator -p powerup

Inscription de tables spatiales dans ArcSDE

Les tables spatiales sont inscrites dans ArcSDE à l'aide de la commande sdelayer. Une fois inscrite, un enregistrement correspondant à la table est ajouté aux tables système LAYERS et TABLE_REGISTRY. Les enregistrements sont également ajoutés à la table système COLUMN_REGISTRY pour chaque colonne de la table, et un enregistrement est ajouté à la table système GEOMETRY_COLUMNS pour la colonne spatiale.

Les options illustrées dans ces exemples indiquent les éléments suivants :

Étapes :
  1. Utilisez la commande sdelayer avec l'opération register pour inscrire la table outbreaks dans ArcSDE.

    Oracle

    sdelayer -o register -l outbreaks,location -e p -t ST_GEOMETRY -C RID,SDE
    -E -498618.389,-243045.144,498618.389,243045.144 -R 0 -i sde:oracle11g 
    -s server1 -u creator -p powerup

    PostgreSQL

    sdelayer -o register -l outbreaks,location -e p -t ST_GEOMETRY -C RID,SDE
    -E -498618.389,-243045.144,498618.389,243045.144 -R 0 -i sde:postgresql:server1 
    -s server1 -D postdb -u creator -p powerup

    DB2

    sdelayer -o register -l outbreaks,location -e p -t ST_GEOMETRY -C RID,SDE
    -E -498618.389,-243045.144,498618.389,243045.144 -R 0 -i sde:db2 -s server1 
    -D db2db -u creator -p powerup

    Informix

    sdelayer -o register -l outbreaks,location -e p -t ST_GEOMETRY -C RID,SDE
    -E -498618.389,-243045.144,498618.389,243045.144 -R 0 -i sde:informix 
    -s server1 -D idsdb -u creator -p powerup

Inscription de la table et de la couche dans la géodatabase

Vous pouvez utiliser ArcGIS Desktop ou ArcObjects pour inscrire une table ou une couche avec la géodatabase.

Utilisez RegisterAsObjectClass sur la méthode ArcObjects IClassSchemaEdit3 pour inscrire une table ou une couche dans la géodatabase. Consultez la bibliothèque ArcObjects pour en savoir plus sur la syntaxe et les modalités d'utilisation.

La procédure suivante décrit l'inscription dans la géodatabase avec ArcGIS Desktop.

Dans l'arborescence du catalogue, cliquez avec le bouton droit de la souris sur la table ou la couche que vous souhaitez inscrire dans la géodatabase, puis choisissez Inscrire dans la géodatabase.

Étapes :
  1. Lancez ArcMap et ouvrez la fenêtre Catalogue ou démarrez ArcCatalog.
  2. Connectez-vous à la géodatabase ArcSDE qui contient la table que vous souhaitez inscrire.

    Cette connexion est établie sous le nœud Connexions aux bases de données de l'arborescence du catalogue. Assurez-vous que vous connectez en tant que propriétaire de la table.

  3. Cliquez avec le bouton droit de la souris sur la table patients.
  4. Cliquez sur Inscrire dans la géodatabase.
  5. Vous avez indiqué le champ OID comme ObjectID lorsque vous avez inscrit la table dans ArcSDE. Par conséquent, choisissez ce champ pour l'utiliser comme champ ObjectID de la géodatabase.
  6. Cliquez sur OK.
  7. Cliquez avec le bouton droit de la souris sur la couche outbreaks.
  8. Cliquez sur Inscrire dans la géodatabase.
  9. Cliquez sur OK.

3/6/2012