Registrar una columna ST_Geometry

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:

Pasos:
  1. Abra una ventana de comando o un shell.
  2. 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

  3. 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.

  4. 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.

Temas relacionados

5/10/2014