Ejemplo: Crear una vista espacial en PostgreSQL con el comando sdetable

Complejidad: Principiante Requisitos de datos: Usar datos propios

Puede crear vistas espaciales con el comando sdetable al incluir la columna espacial en la lista de columnas especificadas con la opción –c. Cuando crea una vista espacial con el comando sdetable, esta se registra como una tabla en ArcSDE. Para registrar la vista como una capa, utilice el comando sdelayer.

En este ejemplo, se crea una vista espacial que incorpora columnas de una clase de entidad y tabla no espacial con el comando sdetable, a la que se le otorgan privilegios. Posteriormente, la vista se registra como una capa con ArcSDE.

Crear una vista espacial

En el siguiente ejemplo, la tabla, empleados, se une con la clase de entidad, regiones. Las tablas se unen en emp_id, que existe en ambas tablas.

sdetable –o create_view -T emp_region_view -t employees,hbear.regions –c "employees.emp_id,employees.name,hbear.regions.reg_id,hbear.regions.rname,hbear.regions.region" -a "eid,employee,rid,region,area" –w "employees.emp_id = hbear.regions.emp_id"  -s mypgdbserver -i sde:postgresql:mypgdbserver -D testdb –u gdb –p gdb.bdg

Si las tablas no pertenecen al usuario conectado, el nombre debe estar en formato owner.table. Al utilizar varias tablas, debe calificar los nombres de cada columna que se enumera después de –c con el nombre de la tabla en el formato table.column u owner.table.column. El usuario que crea la vista debe tener como mínimo privilegios selectos en la tabla y en la clase de entidad.

Dado que en este ejemplo se incluyen columnas de dos tablas diferentes en la vista, lo que hace que los nombres de la tabla sean bastante largos, la opción –a se utiliza para asignar alias a las columnas. Sin embargo, el solapamiento sólo es necesario si los nombres de columna que se incluyen en la vista son ambiguos. Por ejemplo, si crea una vista entre dos tablas e incluye la columna de nombre de ambas, debe asignar un alias a las columnas y otorgarles nombres diferentes. Si utiliza la opción –a para asignar un alias a los nombres de columna, las columnas y el orden en el que están enumeradas deben ser iguales en las listas –c y –a.

El reg_id es la columna de enteros, no nulos de la clase de entidad regiones que se utiliza como el Id. de fila en ArcSDE. Región es la columna espacial de la clase de entidad regiones.

SugerenciaSugerencia:

El usuario gdb debe tener como mínimo privilegios selectos en la clase de entidad regiones para incluirlo en la definición emp_region_view.

Ahora la vista está registrada con ArcSDE como una tabla (hay una entrada para ella en la tabla del sistema sde_table_registry). La vista aparecerá como una tabla cuando se visualice mediante ArcGIS Desktop.

Otorgar privilegios en la vista

Puede utilizar SQL o el comando sdetable para otorgar privilegios en una vista.

En el ejemplo: Crear una vista espacial en PostgreSQL con SQL y registrarla, SQL se utiliza para otorgar privilegios en la vista. En este ejemplo, se utiliza el comando sdetable con la operación de otorgamiento.

sdetable -o grant -t emp_region_view -U dispatch1  -A SELECT -s mypgdbserver -i sde:postgresql:mypgdbserver  -D testdb -u gdb -p gdb.bdg -I

Se incluye la opción –I para permitir que el usuario, dispatch1, otorgue privilegios en la vista a otros usuarios.

Registrar la vista como una capa

Cuando se creó la vista con el comando sdetable, se registró con ArcSDE como una tabla. Para ver la vista como una capa, debe registrarla con el comando sdelayer.

sdelayer -o register -l emp_region_view,area -e a  -C rid,USER -t ST_GEOMETRY -E 2.20,2.20,3.01,3.01  -R 1 -s mypgdbserver -i sde:postgresql:mypgdbserver  -D testdb -u gdb -p gdb.bdg

Los valores que proporcione para las opciones, excepto –o, variarán según los datos.

Para obtener más información acerca de los comandos sdelayer y sdetable, consulte la Referencia sobre el comando de administración.


7/10/2012