Si utiliza SQL para crear una tabla que contiene una columna de ST_Geometry, puede registrar la columna de utilizar una referencia espacial específica y dimensionalidad. De esa manera, al insertar registros a través SQL, no se pueden insertar accidentalmente registros que utilicen una referencia espacial diferente.
Registrar una columna ST_Geometry en PostgreSQL
Use st_register_spatial_column para registrar la columna ST_Geometry en una tabla de PostgreSQL creada con SQL. La sintaxis de la función st_register_spatial_column es la siguiente:
SELECT st_register_spatial_column (
'<database_name>',
'<schema_name>',
'<table_name>',
'<spatial_column_name>',
<srid>,
<coordinate_dimension>
);
El SRID que especifique debe existir en la tabla public.sde_spatial_references en PostgreSQL. La dimensión de coordenadas indica si los datos solo tienen coordenadas x, y (2), coordenadas x, y, z (3), coordenadas x, y, z, m (4), coordenadas x, y, m (5). Por defecto, si no se especifica una dimensión de coordenadas, los datos se registran como si solo tuvieran dimensiones x,y.
Los siguientes pasos proporcionan un ejemplo de cómo registrar una columna de ST_Geometry en PostgreSQL para utilizar un SRID específico y dimensionalidad:
- Abra una ventana de comando o un shell.
- Inicie sesión en un editor SQL y conéctese a la base de datos que contiene la tabla para la que desea registrar la columna ST_Geometry.
En este ejemplo, el usuario horace se conecta a la base de datos spatdat.
psql spatdat horace
- En la ventana de SQL, solicite la función st_register_spatial_column para registrar la columna espacial de la tabla para utilizar un SRID específico y dimensionalidad.
Aquí, la columna de la tabla de puntos de referencia de georreferenciación en el esquema cleo está registrado con un SRID de 104199 y x, y, z dimensionalidad:
SELECT sde.st_register_spatial_column( 'spatdat', 'cleo', 'waypoints', 'geo', 104199, 3 );
El usuario debe tener por lo menos privilegios SELECT en la tabla cleo.waypoints para registrar la columna espacial.
- Para confirmar que la tabla se registró correctamente, puede utilizar las funciones y st_isregistered_spatial_column y st_get_coord_dimension para devolver la información registrada.
La función st_isregistered_spatial_column devuelve 1 (verdadero) si la columna está registrada con el SRID que se especificó.
SELECT sde.st_isregistered_spatial_column( 'spatdat', 'cleo', 'waypoints', 'geo', 104199 ); st_isregistered_spatial_column -------------------------------- 1
La función st_coord_dimension devuelve qué dimensiones de la tabla puede almacenar:
SELECT sde.st_get_coord_dimension( 'cleo', 'waypoints', 'geo', 104199 ); st_get_coord_dimension -------------------------------- xyz
Registrar una columna ST_Geometry en SQLite
Use AddGeometryColumn para agregar una columna ST_Geometry a una tabla de SQLite y registrarla con un SRID y una dimensión de coordenadas específicos. A continuación se muestra la sintaxis de AddGeometryColumn:
SELECT AddGeometryColumn (
<'main'|null>,
<table_name>,
<spatial_column_name>,
<srid>,
<geometry_type>
<coordinate_dimension>,
<'null'|'not null'>
);
Cuando se conecte a SQLite a través de un cliente de SQL, se conectará a main. Puede especificar main o usar null, que presupone que se está conectando a main. La dimensión de coordenadas es xy (2), xyz (3), xyzm (4) o xyzm (5). Si especifica una dimensión de xy o 2, no tendrá que incluirla en el tipo de geometría. Si especifica otras dimensiones de coordenadas cualesquiera, también tendrá que incluir esa información cuando especifique el tipo de geometría. Puede escribir el tipo de geometría o el código del tipo de geometría. Los posibles valores son los siguientes:
Valores de tipo de geometría | Código |
---|---|
st_geometry o geometría | 0 |
st_point o point | 1 |
st_linestring o linestring | 2 |
st_polygon o polygon | 3 |
st_multipoint o multipoint | 4 |
st_multilinestring o multilinestring | 5 |
st_multipolygon o multipolygon | 6 |
st_geometryz o geometryz | 1000 |
st_pointz o pointz | 1001 |
st_linestringz o linestringz | 1002 |
st_polygonz o polygonz | 1003 |
st_multipointz o multipointz | 1004 |
st_multilinestringz o multilinestringz | 1005 |
st_multipolygonz o multipolygonz | 1006 |
st_geometrym o geometrym | 2000 |
st_pointm o pointm | 2001 |
st_linestringm o linestringm | 2002 |
st_polygonm o polygonm | 2003 |
st_multipointm o multipointm | 2004 |
st_multilinestringm o multilinestringm | 2005 |
st_multipolygonm o multipolygonm | 2006 |
st_geometryzm o geometryzm | 3000 |
st_pointzm o pointzm | 3001 |
st_linestringzm o linestringzm | 3002 |
st_polygonzm o polygonzm | 3003 |
st_multipointzm o multipointzm | 3004 |
st_multilinestringzm o linestringzm | 3005 |
st_multipolygonzm o multipolygonzm | 3006 |
Consulte Crear tablas con una columna ST_Geometry para obtener un ejemplo de la creación de una tabla en SQLite y del uso de AddGeometryColumn para agregar y registrar la columna ST_Geometry.
Registrar una columna ST_Geometry en Oracle
En Oracle, crear un índice espacial en la columna ST_Geometry registra la columna de modo que use una referencia espacial específica. Consulte Crear índices espaciales en tablas con una columna ST_Geometry si desea obtener un ejemplo del uso de SQL para crear un índice espacial en Oracle.