Agregar el tipo ST_Geometry a una base de datos de PostgreSQL
Disponible con una licencia Standard o Advanced.
Para usar el tipo ST_Geometry para almacenar datos espaciales en una base de datos de PostgreSQL, el administrador de la base de datos puede ejecutar la herramienta de geoprocesamiento Crear tipo espacial o un script de Python que invoque a la función CreateSpatialType de ArcPy para agregar el tipo, sus subtipos y funciones a la base de datos.
Sugerencia:
Si utilizó la herramienta de geoprocesamiento Crear geodatabase corporativa con el parámetro Tipo espacial establecido en PostGIS para crear una geodatabase en PostgreSQL y posteriormente decide agregar el tipo ST_Geometry a esa geodatabase, puede ejecutar la herramienta Crear tipo espacial para agregar ST_Geometry a esa geodatabase. De lo contrario, solo debe ejecutar la herramienta Crear tipo espacial en una base de datos.
La herramienta y la función Crear tipo espacial hacen lo siguiente:
Crean un inicio de sesión sde en el clúster de base de datos de PostgreSQL.
Otorgan la autoridad de superusuario al usuario sde (se puede revocar después de crear el tipo ST_Geometry).
Crean un esquema denominado sde en la base de datos.
Otorgan al usuario sde plena autoridad en el esquema sde.
Conceden el privilegio de
USAGEen el esquema sde al grupo de inicio de sesión público. Este privilegio se puede revocar del grupo público, pero debe otorgar el privilegio deUSAGEen el esquema sde a todos los usuarios que necesiten tener acceso al tipo, subtipos o funciones de ST_Geometry.Crean las funciones, dominios, tablas (sde_coordinate_systems y sde_geometry_columns) y vistas (st_geometry_columns y st_spatial_references) necesarias en el esquema sde, y la tabla sde_spatial_references en el esquema público.
Antes de ejecutar la herramienta o función, debe copiar la biblioteca st_geometry en el servidor de PostgreSQL.
Nota:
El archivo st_geometry.dll necesita el paquete redistribuible de Microsoft Visual C++ (x64) cuando se implementa en un servidor de Microsoft Windows. Consulte Requisitos de ArcGIS para utilizar PostgreSQL para conocer la versión del paquete que se requiere. Si este paquete no está presente en el servidor PostgreSQL, descárguelo desde el sitio web de Microsoft e instálelo.
Utilizar la herramienta de geoprocesamiento Crear tipo espacial
Para ejecutar la herramienta de geoprocesamiento Crear tipo espacial con el fin de instalar el tipo ST_Geometry en una base de datos de PostgreSQL, siga estos pasos:
Descargue el archivo comprimido ST_Geometry de My Esri.
Los archivos comprimidos son específicos de la versión del software de ArcGIS desde la que se creará el tipo espacial.
Si la opción de descarga no está presente, póngase en contacto con el administrador de su organización de ArcGIS.
Extraiga el contenido del archivo.
Nota:
Las bibliotecas st_geometry son para sistemas operativos y versiones de PostgreSQL específicos. Asegúrese de copiar la biblioteca correcta.
Coloque el archivo st_geometry en el directorio
libde PostgreSQL.Si PostgreSQL está instalado en un servidor de Windows, coloque el archivo
st_geometry.dllen el directorio%PostgreSQL%\libdel servidor.La ubicación del directorio
liben Linux puede variar en función de cómo haya instalado PostgreSQL. Para determinar la ubicación correcta de la instalación de PostgreSQL, ejecutepg_configcomo usuario postgres. El valor que se devuelve para PKGLIBDIR es el directorio delibdonde es necesario colocar el archivost_geometry.so. Inicie sesión en el equipo como usuario raíz para copiar el archivo en la ubicaciónlib.
Nota:
Si su sistema operativo Linux no incluye
libstdcc++.so.6.0.29o una versión posterior de la biblioteca, también coloca la bibliotecalibstdcc++.so.6en el directorio PostgreSQLlibjunto con la bibliotecast_geometry.so.Abra un proyecto en ArcGIS Pro, abra el panel Catálogo y conéctese a la base de datos como un superusuario de PostgreSQL.
Se crea un archivo de conexión a la base de datos (
.sde) en la carpeta de su proyecto.Abra la herramienta Crear tipo espacial.
Puede utilizar la ventana Buscar para buscar la herramienta o abrir la herramienta desde el conjunto de herramientas Espacio de trabajo de la caja de herramientas Administración de datos.
Agregue la conexión de base de datos que creó en el paso 2 al cuadro de texto del parámetro Conexión a la base de datos de entrada.
Introduzca la contraseña del usuario de la base de datos sde en el cuadro de texto del parámetro Contraseña de usuario SDE.
Sugerencia:
Si el clúster de la base de datos de PostgreSQL ya tiene un rol de inicio de sesión sde, la contraseña que proporcione debe coincidir con la contraseña del rol de inicio de sesión sde existente. Por ejemplo, si tiene una geodatabase corporativa en este mismo clúster de bases de datos, en este caso el rol de conexión sde ya existe y debe utilizar aquí su contraseña.
Deje en blanco el cuadro de texto del parámetro Nombre del espacio de tabla.
Haga clic en Ejecutar.
El tipo ST_Geometry, sus subtipos y funciones se crean en el esquema del usuario sde de la base de datos que especificó.
Utilizar funciones de ArcPy
En cualquier equipo de ArcGIS Pro o ArcGIS Server, utilice la función CreateDatabaseConnection de ArcPy para crear un archivo de conexión de base de datos (.sde) que se conecta a la base de datos de PostgreSQL como el superusuario de PostgreSQL. A continuación, utilice el archivo .sde y la función CreateSpatialType de ArcPy para crear el tipo, subtipo y funciones de ST_Geometry en la base de datos.
Descargue la biblioteca
st_geometrydesde My Esri y colóquela en el directoriolibde PostgreSQL.Nota:
Si su sistema operativo Linux no incluye
libstdcc++.so.6.0.29o una versión posterior de la biblioteca, descargue también la bibliotecalibstdcc++.so.6de PostgreSQL desde My Esri y colóquela en el directorio de PostgreSQLlibjunto con la bibliotecast_geometry.so.Las bibliotecas st_geometry son para sistemas operativos, versiones de PostgreSQL y versiones de ArcGIS específicos.
La ubicación del directorio
liben Linux puede variar en función de cómo haya instalado PostgreSQL. Para determinar la ubicación correcta de la instalación de PostgreSQL, ejecutepg_configcomo usuario postgres. El valor que se devuelve para PKGLIBDIR es el directorio delibdonde es necesario colocar el archivost_geometry.so. Inicie sesión en el equipo como usuario raíz para copiar el archivo en la ubicaciónlib.Si PostgreSQL está instalado en un servidor de Windows, coloque el archivo
st_geometry.dllen el directorio%PostgreSQL%\libdel servidor.
Ejecute la función
CreateDatabaseConnectionpara crear el archivo.sde.Debe conectarse como superusuario de PostgreSQL y debe guardar las credenciales.
En el siguiente ejemplo, el archivo de conexión se crea en un directorio llamado TempFiles, el nombre del archivo de conexión es suserconnection.sde; se proporcionan credenciales para el superusuario y se guardan junto con el archivo para conectarse a una base de datos llamada pgdb en el clúster de base de datos pginstance.
import arcpy arcpy.management.CreateDatabaseConnection( "/user/TempFiles", "suserconnection.sde", "POSTGRESQL", "pginstance", "DATABASE_AUTH", "postgres", "Cl@rkK3nt", "SAVE_USERNAME", "pgdb" )Ejecute la función
CreateSpatialTypede ArcPy para instalar el tipo ST_Geometry en la instancia de PostgreSQL.En este ejemplo, se utiliza el archivo de conexión del paso anterior y la contraseña sde se establece en pw0rd4sde.
import arcpy arcpy.management.CreateSpatialType( "suserconnection.sde", "pw0rd4sde" )
El tipo ST_Geometry, sus subtipos y funciones se crean en el esquema del usuario sde de la base de datos especificado en el archivo de conexión de base de datos.