Flujo de trabajo: crear tablas con SQL y registrarlas con ArcSDE y la geodatabase
Este tema se aplica sólo a ArcEditor y ArcInfo.
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
- 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.
- 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.
- 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.
- 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.
El 0 equivale al SRID en estos ejemplos de muestra. Usted debería especificar un número diferente en la práctica.
- 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:
- La opción –o indica la operación que se está llevando a cabo; en este caso, registrar.
- La opción –t especifica el nombre de la tabla que se va a registrar (patients).
- La opción –c especifica el nombre de la columna, PID, que se va a usar como un ObjectID.
- La opción –C especifica que el sistema completará la columna de ahora en adelante.
- La opción –i especifica la sintaxis de conexión. En este caso, se utiliza una conexión directa con la geodatabase.
- La opción –s indica el servidor o la fuente de datos.
- La opción –D (que no se utiliza con Oracle) especifica el nombre de la base de datos.
- Las opciones –u y –p son el nombre de usuario y la contraseña del propietario de la tabla.
- Cambie los directorios a SDEHOME > bin.
- 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:
- La opción –o indica la operación que se está llevando a cabo; en este caso, registrar.
- La opción –l se utiliza para especificar el nombre de la tabla que se va a registrar (outbreaks) y la columna de geometría (location).
- La opción –e indica el tipo de geometría almacenada en esta tabla. En este ejemplo, los puntos se almacenan en la tabla, de modo que p se especifica con la opción –e.
- El tipo de datos de geometría (ST_Geometry) se especifica con la opción –t.
- La opción –C designa el nombre de la columna, RID, que se va a usar como el ObjectID, y especifica que la columna debe ser mantenida por el sistema. En este caso, la columna aún no existe. Por lo tanto, ArcSDE agregará esta columna a la tabla.
- La opción –E especifica las coordenadas x e y máximas y mínimas de la capa.
- El Id. de referencia espacial (SRID) de la tabla de sistema de ArcSDE se especifica con la opción –R.
- La opción –i especifica la sintaxis de conexión. En este caso, se utiliza una conexión directa con la geodatabase.
- La opción –s indica el servidor o la fuente de datos.
- La opción –D (que no se utiliza con Oracle) especifica el nombre de la base de datos.
- Las opciones –u y –p son el nombre de usuario y la contraseña del propietario de la tabla.
- 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.
- Inicie ArcMap y abra la ventana Catálogo o inicie ArcCatalog.
-
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.
- Haga clic con el botón derecho en la tabla de pacientes.
- Haga clic en Registrar con geodatabase.
- 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.
- Haga clic en Aceptar.
- Haga clic con el botón derecho en la tabla de enfermedades.
- Haga clic en Registrar con geodatabase.
- Haga clic en Aceptar.