Puede utilizar Lenguaje estructurado de consultas (SQL), tipos de datos y formatos de tablas del sistema de administración de bases de datos (DBMS) para trabajar con la información almacenada en una geodatabase o en una base de datos en la que el ST_Geometry esté instalado. SQL es un lenguaje de base de datos que es compatible con los comandos de definición y manipulación de datos.
Cuando se accede a los datos a través de SQL, las aplicaciones externas pueden trabajar con los datos tabulares administrados por la geodatabase o por la base de datos. Estas aplicaciones externas pueden ser aplicaciones de bases de datos no espaciales o aplicaciones espaciales personalizadas desarrolladas en un entorno diferente a ArcObjects.
Cuando inserte o edite datos en una geodatabase o en una base de datos por medio de SQL, emita una declaración COMMIT o ROLLBACK después de que se haya ejecutado la declaración SQL para asegurarse de que los cambios se confirman en la base de datos o se deshacen. De esta forma, se evita que se mantengan bloqueos en las filas, las páginas o las tablas que se están editando.
Insertar datos de ST_Geometry con SQL
Puede usar SQL para insertar datos espaciales en una tabla de geodatabase o de base de datos que tenga una columna ST_Geometry. Puede usar las funciones del constructor de ST_Geometry para insertar tipos de geometría concretos. También puede especificar que la salida de ciertas funciones de operaciones espaciales se transfiera a una tabla existente.
Cuando inserte geometría en una tabla usando SQL, tenga en cuenta lo siguiente:
- Debe especificar un Id. de referencia espacial (SRID) válido.
- Para seguir usando la tabla con ArcGIS, el campo que se va a utilizar como ObjectID no puede ser nulo.
Id. de referencia espacial
El SRID que se especifica cuando se inserta una geometría en una tabla de Oracle que usa el tipo espacial ST_Geometry debe estar en la tabla ST_SPATIAL_REFERENCES y tener un registro coincidente en la tabla SDE.SPATIAL_REFERENCES. El SRID que se especifica cuando se inserta una geometría en una tabla de PostgreSQL que usa el tipo espacial ST_Geometry debe estar en la tabla public.sde_spatial_references. A partir de ArcGIS 10.1, estas tablas se llenan de antemano con referencias espaciales y SRID.
El SRID que se especifica cuando se inserta una geometría en una tabla de SQLite que usa el tipo espacial ST_Geometry (geometryblob) debe estar en la tabla st_spatial_reference_systems.
Si necesita utilizar una referencia espacial personalizada que no está en la tabla, la forma más sencilla de hacerlo es usar ArcGIS Desktop para cargar o crear una clase de entidad que tenga los valores de referencia espacial deseados. Asegúrese de que la clase de entidad creada usa el almacenamiento ST_Geometry. Esto crea un registro en las tablas SDE.SPATIAL_REFERENCES y ST_SPATIAL_REFERENCES en Oracle, un registro en la tabla public.sde_spatial_references en PostgreSQL o un registro en la tabla st_aux_spatial_reference_systems_table en SQLite.
En las geodatabases, puede consultar la tabla LAYERS (Oracle) o sde_layers (PostgreSQL) para averiguar el SRID asignado a la tabla espacial. Luego, puede usar el SRID cuando cree tablas espaciales e inserte datos con SQL.
Si lo prefiere, puede agregar una referencia espacial a la tabla ST_SPATIAL_REFERENCES o sde_spatial_references con SQL. Consulte Crear referencias espaciales con SQL para obtener más información.
Si desea obtener una explicación sobre los SRID y los sistemas de referencia espaciales, consulte ¿Qué es un SRID? y Referencias espaciales.
ObjectIDs
Para que ArcGIS consulte los datos, es necesario que la tabla contenga un campo de identificador único.
Las clases de entidad creadas con ArcGIS siempre tienen un campo ObjectID que se usa como campo de identificador. Cuando se insertan registros en la clase de entidad usando ArcGIS, siempre se inserta un valor único en el campo ObjectID. ArcGIS mantiene el campo ObjectID en una tabla de geodatabase. El DBMS mantiene el campo ObjectID de una tabla de base de datos creada en ArcGIS.
Cuando se insertan registros en una tabla de geodatabase con SQL, se debe usar la función Next_RowID para obtener e insertar un valor válido de ObjectID. Cuando se usa SQL para insertar registros en una tabla de base de datos creada en ArcGIS, el DBMS llena el campo ObjectID con un valor.
Las tablas de base de datos que se crean fuera de ArcGIS deben tener un campo (o un conjunto de campos) que ArcGIS pueda usar como ObjectID. Si se usa el tipo de datos nativo de incremento automático de la base de datos para el campo de Id. de la tabla, el DBMS llenará este campo cuando se inserte un registro a través de SQL. Si desea mantener manualmente los valores del campo de identificador único, asegúrese de proporcionar un valor único para el Id. cuando edite la tabla en SQL.
Consulte ¿Qué es un ObjectID? para obtener más información.
Editar datos de ST_Geometry con SQL
Las ediciones de los registros existentes realizadas en SQL afectan con frecuencia a los atributos no espaciales almacenados en la tabla. Sin embargo, puede editar los datos en la columna ST_Geometry con la ayuda de las funciones del constructor contenidas en las declaraciones SQL UPDATE.
Si los datos están almacenados en una geodatabase, hay algunas directrices adicionales que se deben seguir al editar con SQL:
- No actualice los registros con SQL si los datos se han versionado, a menos que utilice SQL junto con una vista versionada.
- No modifique ningún atributo que afecte a otros objetos de la base de datos que participen en el comportamiento de la geodatabase, como clases de relación, anotaciones vinculadas a entidad, topologías o redes.