Skip to main content

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 USAGE en 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 de USAGE en 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:

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

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

  3. Coloque el archivo st_geometry en el directorio lib de PostgreSQL.

    • Si PostgreSQL está instalado en un servidor de Windows, coloque el archivo st_geometry.dll en el directorio %PostgreSQL%\lib del servidor.

    • La ubicación del directorio lib en Linux puede variar en función de cómo haya instalado PostgreSQL. Para determinar la ubicación correcta de la instalación de PostgreSQL, ejecute pg_config como usuario postgres. El valor que se devuelve para PKGLIBDIR es el directorio de lib donde es necesario colocar el archivo st_geometry.so. Inicie sesión en el equipo como usuario raíz para copiar el archivo en la ubicación lib.

    Nota:

    Si su sistema operativo Linux no incluye libstdcc++.so.6.0.29 o una versión posterior de la biblioteca, también coloca la biblioteca libstdcc++.so.6 en el directorio PostgreSQL lib junto con la biblioteca st_geometry.so.

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

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

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

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

  8. Deje en blanco el cuadro de texto del parámetro Nombre del espacio de tabla.

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

  1. Descargue la biblioteca st_geometry desde My Esri y colóquela en el directorio lib de PostgreSQL.

    Nota:

    Si su sistema operativo Linux no incluye libstdcc++.so.6.0.29 o una versión posterior de la biblioteca, descargue también la biblioteca libstdcc++.so.6 de PostgreSQL desde My Esri y colóquela en el directorio de PostgreSQL lib junto con la biblioteca st_geometry.so.

    Las bibliotecas st_geometry son para sistemas operativos, versiones de PostgreSQL y versiones de ArcGIS específicos.

    • La ubicación del directorio lib en Linux puede variar en función de cómo haya instalado PostgreSQL. Para determinar la ubicación correcta de la instalación de PostgreSQL, ejecute pg_config como usuario postgres. El valor que se devuelve para PKGLIBDIR es el directorio de lib donde es necesario colocar el archivo st_geometry.so. Inicie sesión en el equipo como usuario raíz para copiar el archivo en la ubicación lib.

    • Si PostgreSQL está instalado en un servidor de Windows, coloque el archivo st_geometry.dll en el directorio %PostgreSQL%\lib del servidor.

  2. Ejecute la función CreateDatabaseConnection para 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"
    )
    
  3. Ejecute la función CreateSpatialType de 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.