Flujo de trabajo: crear tablas con SQL y registrarlas con ArcSDE y la geodatabase

Este tema se aplica sólo a ArcEditor y ArcInfo.

Complejidad: Intermedio Requisitos de datos: Usar datos propios Objetivo: Cree tablas espaciales y no espaciales con SQL, regístrelas con ArcSDE y después con la geodatabase.

Puede usar SQL para crear tablas. Si la tabla contiene una columna espacial, se considera que es una tabla espacial. Puede usar SQL para completar las tablas espaciales y no espaciales con datos. Después, para utilizar la funcionalidad de geodatabase y de ArcSDE, puede registrar la tabla con ArcSDE y la geodatabase.

Puede hacer esto si usa una aplicación personalizada para crear tablas espaciales o no espaciales, o recibir tablas de bases de datos de una agencia o contratista, pero quiere aprovechar la funcionalidad de geodatabase y de ArcGIS.

Crear una tabla no espacial con SQL

Pasos:
  1. Abra un cliente SQL e inicie sesión en la base de datos como usuario con permisos para crear tablas en la base de datos.
  2. Utilice una declaración SQL CREATE TABLE para crear una tabla no espacial, patients, que contenga columnas con los nombres siguientes: PID, f_name, l_name, y 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); 

Agregar datos a una tabla no espacial con SQL

Utilice las declaraciones SQL INSERT para agregar registros a la tabla de pacientes con SQL.

Pasos:
  1. Inserte cuatro registros en la tabla de pacientes.

    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);

Crear una tabla espacial con SQL

También puede usar una declaración CREATE TABLE para crear una tabla con una columna espacial.

Pasos:
  1. Cree una tabla, outbreaks (enfermedades), que contenga un OID entero, un dwel_id entero, una dirección de cadena, un city_code entero, y una columna de ubicación 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); 

Agregar datos a una tabla espacial con SQL

Inserte tres registros a la tabla de enfermedades.

NotaNota:

El 0 equivale al SRID en estos ejemplos de muestra. Usted debería especificar un número diferente en la práctica.

Pasos:
  1. Utilice las declaraciones SQL INSERT y la función ST_Point para agregar registros a la tabla de enfermedades.

    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) );

Registrar tablas no espaciales con ArcSDE

Las tablas no espaciales se registran con ArcSDE por medio del comando sdetable. Una vez registradas, se agrega un registro para la tabla en la tabla de sistema TABLE_REGISTRY. También se agregan registros a la tabla de sistema COLUMN_REGISTRY para cada columna de la tabla.

Las opciones que se muestran en estos ejemplos indican lo siguiente:

Pasos:
  1. Cambie los directorios a SDEHOME > bin.
  2. Ejecute el comando sdetable con la operación de registro para registrar la tabla de pacientes con 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

Registrar tablas espaciales con ArcSDE

Las tablas espaciales se registran con ArcSDE por medio del comando sdelayer. Una vez registradas, se agrega un registro para la tabla en las tablas de sistema TABLE_REGISTRY y LAYERS. También se agregan registros a la tabla de sistema COLUMN_REGISTRY para cada columna de la tabla, y se agrega un registro a la tabla de sistema GEOMETRY_COLUMNS para la columna espacial.

Las opciones que se muestran en estos ejemplos indican lo siguiente:

Pasos:
  1. Utilice el comando sdelayer con la operación de registro para registrar la tabla de enfermedades con 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

Registrar la tabla y la capa con la geodatabase

Puede usar ArcGIS Desktop o ArcObjects para registrar una tabla o capa con la geodatabase.

Utilice RegisterAsObjectClass en el método IClassSchemaEdit3 de ArcObjects para registrar una tabla o capa con la geodatabase. Consulte la referencia de la biblioteca de ArcObjects para obtener información sobre sintaxis y uso.

El siguiente conjunto de pasos describe el proceso de registro con la geodatabase en ArcGIS Desktop.

En el árbol de catálogo, haga clic con el botón derecho en la tabla o capa que quiere registrar con la geodatabase y haga clic en Registrar con geodatabase.

Pasos:
  1. Inicie ArcMap y abra la ventana Catálogo o inicie ArcCatalog.
  2. Conéctese a la geodatabase de ArcSDE que contiene la tabla que desea registrar.

    Esta conexión se realiza en el nodo Conexiones de base de datos del árbol de catálogo. Asegúrese de conectarse como propietario de la tabla.

  3. Haga clic con el botón derecho en la tabla de pacientes.
  4. Haga clic en Registrar con geodatabase.
  5. Usted especificó el campo OID como el ObjectID cuando registró la tabla con ArcSDE; por lo tanto, elija ese campo para usarlo como el campo del ObjectID de la geodatabase.
  6. Haga clic en Aceptar.
  7. Haga clic con el botón derecho en la tabla de enfermedades.
  8. Haga clic en Registrar con geodatabase.
  9. Haga clic en Aceptar.

3/6/2012