ArcGIS y el tipo de geometría PostGIS
PostGIS is a product from Refractions Research that can spatially enable PostgreSQL databases. PostGIS follows the Open Geospatial Consortium, Inc., Simple Features specification for SQL.
Al utilizar el tipo de almacenamiento de la geometría PostGIS con ArcGIS, se deben tener en cuenta las reglas siguientes:
- Debe utilizarse la plantilla de base de datos PostGIS para crear la base de datos PostgreSQL utilizada para la geodatabase. Consulte la sección "Preparar una base de datos para utilizar la geometría PostGIS".
- El usuario sde y cualquier otro usuario que cree datos en la geodatabase debe contar con permisos para tablas de PostGIS específicas. Consulte la sección "Otorgar a los usuarios derechos para crear tablas con columnas de geometría PostGIS".
- Las clases de entidad que se creen sólo pueden contener las referencias espaciales incluidas en la tabla public.spatial_ref_sys de PostGIS. Si se especifica una referencia que no se encuentre en la tabla, se produce un error en la creación de la clase de entidad.
- Debe especificarse una palabra clave de configuración que contenga el parámetro GEOMETRY_STORAGE establecido en PG_GEOMETRY para crear una clase de entidad que utilice el tipo de geometría PostGIS.
En las siguientes secciones se ofrece más información acerca del uso del tipo de almacenamiento de la geometría PostGIS con aplicaciones ArcGIS.
Preparar una base de datos para utilizar la geometría PostGIS
Para utilizar el tipo de geometría PostGIS, debe instalar PostGIS.
Instale PostGIS una vez instalado PostgreSQL.
Para obtener la versión de PostGIS compatible con ArcSDE, puede instalar PostgreSQL StackBuilder al instalar PostgreSQL en Windows. También puede consultar el sitio Web de PostGIS en http://www.postgis.org/download/ o el sitio Web de PgFoundry en http://pgfoundry.org/ para consultar las ubicaciones desde las que se pueden descargar los archivos. Asegúrese de descargar los archivos de instalación o binarios correctos para el sistema operativo.
Consulte la página de requisitos del sistema de ArcGIS Server en la página de soporte de Esri para saber qué versión de PostGIS es compatible con ArcSDE.
Al instalar PostGIS, se crea una plantilla de base de datos PostGIS en el cluster de la base de datos de PostgreSQL. Utilice la base de datos de la plantilla PostGIS para crear una base de datos en la que almacenar la geodatabase.
Si crea la geodatabase utilizando el asistente Post-instalación de ArcSDE en Windows, la base de datos se crea a partir de una plantilla distinta a la plantilla PostGIS. Por tanto, si desea utilizar el tipo de geometría PostGIS, debe salir del asistente de instalación antes de comenzar la configuración post-instalación y crear manualmente una base de datos a partir de la plantilla PostGIS, un usuario sde, y un esquema de usuario sde en la base de datos. A continuación, puede completar el resto de los pasos de post-instalación siguiendo el asistente: haga clic en Personalizar en el primer cuadro de diálogo del asistente de post-instalación, haga clic en Siguiente y, a continuación, desactive Definir entorno de usuario SDE.
Otorgar a los usuarios derechos para crear tablas con columnas de geometría PostGIS
Cuando una base de datos se habilita para PostGIS, se crean tablas (geometry_columns y spatial_ref_sys) en el esquema público. Debe otorgar, como mínimo, los privilegios SELECT, INSERT, UPDATE y DELETE en la tabla geometry_columns y SELECT en la tabla spatial_ref_sys para el usuario sde y cualquier otro usuario que vaya a crear datos en la geodatabase.
GRANT select, insert, update, delete ON TABLE public.geometry_columns TO <user_name>; GRANT select ON TABLE public.spatial_ref_sys TO <user_name>;
Crear clases de entidad en una geodatabase de ArcSDE para PostgreSQL utilizando el almacenamiento de geometría PostGIS
Una vez que la base de datos está habilitada para almacenar geometría PostGIS, se pueden crear tablas habilitadas espacialmente que incluyan columnas espaciales de tipo geometría. En las columnas espaciales se pueden insertar entidades geográficas.
El acceso a las tablas habilitadas espacialmente por medio de ArcSDE se puede llevar a cabo por parte de aplicaciones que utilicen las herramientas existentes proporcionadas por el software ArcGIS o creando otras que utilicen la interfaz de programación de aplicaciones (API) C ArcSDE. Un programador de SQL experto también puede realizar llamadas a las funciones espaciales.
Crear clases de entidad mediante ArcGIS
El tipo de almacenamiento de geometría utilizado para las clases de entidad mediante ArcGIS se controla por medio de un ajuste de parámetro en la tabla sde_dbtune. Dicho parámetro es GEOMETRY_STORAGE. En las geodatabases de PostgreSQL, puede establecerse en ST_GEOMETRY o PG_GEOMETRY (el ajuste del tipo de geometría PostGIS). Por tanto, cuando desee crear una clase de entidad mediante ArcGIS que utilice el tipo de geometría PostGIS, especifique una palabra clave de configuración que contenga el parámetro GEOMETRY_STORAGE establecido en PG_GEOMETRY.
De forma predeterminada, el tipo de almacenamiento de geometría para nuevas clases de entidad en una geodatabase de ArcSDE para PostgreSQL utiliza el almacenamiento ST_Geometry. Si desea almacenar la mayor parte de los datos en tipos de almacenamiento PostGIS, cambie a PG_GEOMETRY el valor del parámetro GEOMETRY_STORAGE bajo la palabra clave DEFAULTS en la tabla sde_dbtune. (Utilice el comando sdedbtune para modificar los parámetros en la tabla sde_dbtune. Consulte la Referencia sobre el comando de administración de ArcSDE para obtener más detalles sobre el uso de este comando.) O bien, si desea almacenar sólo algunas de las clases de entidad en el tipo de almacenamiento PostGIS, puede utilizar la palabra clave de geometría PG_GEOMETRY y especificarla al crear la clase de entidad. En el archivo dbtune.sde, la palabra clave PG_GEOMETRY aparece de la siguiente manera:
##PG_GEOMETRY GEOMETRY_STORAGE "PG_GEOMETRY" UI_TEXT "User Interface text description for POSTGIS geometry storage" END
El resto de los parámetros de almacenamiento se toman de la palabra clave DEFAULTS. Para obtener más información acerca del almacenamiento de sde_dbtune, consulte los siguientes temas:
Utilizar tablas de PostGIS existentes
ArcSDE puede utilizar correctamente las tablas que contienen columnas de geometría PostGIS creadas externamente mediante otras aplicaciones o SQL (algunas veces denominadas tablas de terceros), siempre que las tablas cumplan con los requisitos previos siguientes:
- Cada tabla debe pertenecer al usuario que registra la tabla.
- Cada tabla debe tener una única columna de geometría.
- Las tablas no deben tener otras columnas de tipo definido por el usuario.
- Deben tener un único tipo de geometría (puntos, líneas o polígonos), aunque ésta puede ser multiparte.
- Deben tener una columna única de enteros, que no sea NULL, adecuada como columna Id. de fila registrada.
- Deben tener un índice espacial.
Para obtener información acerca de la creación de tablas con una columna PostGIS mediante SQL, consulte la documentación de PostGIS en el sitio Web PostGIS.org.
Registrar tablas de terceros que contengan columnas de geometría PostGIS
El comando de administración sdelayer –o register de ArcSDE registra una tabla como clase de entidad. Esto significa que se agrega un registro a las tablas del sistema sde_layers, sde_table_registry y sde_geometry_columns. También se agregan registros a la tabla de sistema sde_column_registry para cada columna en la tabla.
El siguiente es un ejemplo de registro de una tabla, propiedades, que contienen geometrías de punto (–e p) en una forma de columna espacial. La tabla tiene una columna de enteros, fid, que se utiliza como columna de identificador de entidad única mantenida por sde (–C fid,SDE).
sdelayer –o register –l properties,shape –e p -t PG_GEOMETRY –C fid,SDE -g RTREE -x 30,10,1000 –u <user> –p <pw>
Tal y como se ha indicado anteriormente, el comando sdelayer sólo agrega la tabla a las tablas del sistema de ArcSDE. Para poder utilizar la funcionalidad de geodatabase de ArcGIS Desktop, como topología, versionado y redes, también debe registrar la tabla con la geodatabase. Consulte Registrar una tabla con la geodatabase para obtener más información.
No se puede cambiar el nombre de las tablas espaciales almacenadas mediante el tipo de geometría PostGIS. Esto se debe a que no hay ninguna función de PostGIS para actualizar el nombre de tabla en la tabla public.geometry_columns.
Dónde encontrar documentación de PostGIS y PostgreSQL
Puede encontrar documentación de PostGIS en el sitio Web de PostGIS: http://www.postgis.org/documentation/.
Para obtener información general acerca de PostgreSQL, hay documentación disponible en el sitio Web de PostgreSQL: http://www.postgresql.org/docs/.