Workflow : création de tables avec SQL et inscription avec ArcSDE et la géodatabase
Cette rubrique concerne exclusivement ArcEditor et ArcInfo.
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
- 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.
- 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.
- 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.
- 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.
La valeur 0 dans ces instructions d'exemple est le SRID. Vous pouvez spécifier un nombre différent.
- 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 :
- L'option –o indique l'opération en cours de réalisation. Dans ce cas : register.
- L'option –t indique le nom de la table à inscrire : patients.
- L'option –c indique le nom de la colonne (PID) à utiliser comme identifiant d'objet (ObjectID).
- L'option –C indique que la colonne sera désormais renseignée par le système.
- L'option –i indique la syntaxe de connexion. Dans ce cas, une connexion directe à la géodatabase est utilisée.
- L'option –s indique le serveur ou la source de données.
- L'option –D (non utilisée avec Oracle) indique le nom de la base de données.
- Les options –u et –p sont le nom d'utilisateur et le mot de passe du propriétaire de la table.
- Modifiez les répertoires sur SDEHOME > bin.
- 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 :
- L'option –o indique l'opération en cours de réalisation. Dans ce cas : register.
- L'option –l permet d'indiquer le nom de la table à inscrire (outbreaks) et la colonne de géométrie (location).
- L'option –e indique le type de géométrie stocké dans cette table. Dans cet exemple, les points sont stockés dans la table, donc p est spécifié avec l'option –e.
- Le type de données géométriques (ST_Geometry) est spécifié avec l'option –t.
- L'option –C désigne le nom de la colonne (RID) à utiliser comme identifiant d'objet (ObjectID) et indique que la colonne doit être gérée par le système. Dans ce cas, la colonne n'existe pas encore. Par conséquent, ArcSDE ajoutera cette colonne à la table.
- L'option –E indique les coordonnées x et y minimales et maximales de la couche.
- L'ID de référence spatiale (SRID) de la table système ArcSDE est indiqué avec l'option –R.
- L'option –i indique la syntaxe de connexion. Dans ce cas, une connexion directe à la géodatabase est utilisée.
- L'option –s indique le serveur ou la source de données.
- L'option –D (non utilisée avec Oracle) indique le nom de la base de données.
- Les options –u et –p sont le nom d'utilisateur et le mot de passe du propriétaire de la table.
- 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.
- Lancez ArcMap et ouvrez la fenêtre Catalogue ou démarrez ArcCatalog.
-
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.
- Cliquez avec le bouton droit de la souris sur la table patients.
- Cliquez sur Inscrire dans la géodatabase.
- 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.
- Cliquez sur OK.
- Cliquez avec le bouton droit de la souris sur la couche outbreaks.
- Cliquez sur Inscrire dans la géodatabase.
- Cliquez sur OK.