Skip to main content

Ajouter le type ST_Geometry à une base de données PostgreSQL

Disponible avec une licence Standard ou Advanced.

Pour utiliser le type ST_Geometry afin de stocker des données spatiales dans une base de données PostgreSQL, l’administrateur de base de données peut exécuter l’outil de géotraitement Créer un type spatial ou un script Python qui appelle la fonction ArcPy CreateSpatialType afin d’ajouter le type, ses sous-types et les fonctions dans la base de données.

Conseil :

Si vous avez utilisé l’outil de géotraitement Créer une géodatabase d’entreprise avec le paramètre Spatial Type (Type spatial) défini sur PostGIS pour créer une géodatabase dans PostgreSQL, et que vous décidez ultérieurement d’ajouter le type ST_Geometry à cette géodatabase, vous pouvez exécuter l’outil Créer un type spatial pour ajouter le type ST_Geometry à cette géodatabase. Sinon, exécutez seulement l’outil Créer un type spatial dans une base de données.

L’outil Créer le type spatial permet d’effectuer les opérations suivantes :

  • Créez un rôle de connexion sde dans le cluster de bases de données PostgreSQL.

  • Octroi de l’autorité de super-utilisateur à l’utilisateur SDE (cette autorité peut être révoquée une fois le type ST_Geometry créé).

  • Créez un schéma nommé sde dans la base de données.

  • Octroi d’une autorité complète sur la structure sde à l’utilisateur SDE.

  • Octroi du privilège USAGE sur la structure sde au groupe de connexion public. Vous pouvez révoquer ce privilège du groupe public, mais vous devez accorder le privilège USAGE sur la structure sde à tous les utilisateurs qui ont besoin d’accéder au type, aux sous-types ou aux fonctions ST_Geometry.

  • Création des fonctions, domaines, tables (sde_coordinate_systems et sde_geometry_columns) et vues (st_geometry_columns et st_spatial_references) nécessaires dans la structure sde, ainsi que de la table sde_spatial_references dans la structure publique.

Avant d’exécuter l’outil ou la fonction, vous devez copier la bibliothèque st_geometry sur le serveur PostgreSQL.

Remarque :

Le fichier st_geometry.dll requiert Microsoft Visual C++ Redistributable Package (x64) lorsqu’il est déployé sur un serveur Microsoft Windows. Pour connaître la version requise du paquetage, reportez-vous à la rubrique Configuration ArcGIS requise pour l’utilisation de PostgreSQL. Si ce paquetage n’est pas présent sur le serveur PostgreSQL, téléchargez-le depuis le site de Microsoft et installez-le.

Utiliser l’outil de géotraitement Créer un type spatial

Pour exécuter l’outil de géotraitement Créer le type spatial afin d’installer le type ST_Geometry dans une base de données PostgreSQL, procédez comme suit :

  1. Téléchargez le fichier compressé ST_Geometry depuis My Esri.

    Les fichiers compressés sont propres à la version logicielle d’ArcGIS avec laquelle vous allez créer le type spatial.

    Si l’option de téléchargement n’est pas présente, contactez l’administrateur de votre organisation ArcGIS.

  2. Procédez à l’extraction du contenu du fichier.

    Remarque :

    Les bibliothèques st_geometry sont destinées à des systèmes d’exploitation et des versions spécifiques de PostgreSQL. Veillez à copier la bibliothèque adéquate.

  3. Placez le fichier st_geometry dans le répertoire PostgreSQL lib.

    • Si PostgreSQL est installé sur un serveur Windows, placez le fichier st_geometry.dll dans le répertoire %PostgreSQL%\lib sur le serveur.

    • L’emplacement du répertoire lib sous Linux varie selon le mode d’installation de PostgreSQL. Pour déterminer l’emplacement correct de l’installation de PostgreSQL, exécutez pg_config en tant qu’utilisateur postgres. La valeur qui est renvoyée pour PKGLIBDIR est le répertoire lib dans lequel vous devez placer le fichier st_geometry.so. Connectez-vous à la machine en tant qu’utilisateur racine pour copier le fichier dans le répertoire lib.

    Remarque :

    Si votre système d’exploitation Linux n’inclut pas libstdcc++.so.6.0.29 ou une version ultérieure de la bibliothèque, placez également la bibliothèque libstdcc++.so.6 dans le répertoire PostgreSQL lib avec la bibliothèque st_geometry.so.

  4. Ouvrez un projet dans ArcGIS Pro, ouvrez la fenêtre Catalog (Catalogue), puis connectez-vous à la base de données en tant que superutilisateur PostgreSQL.

    Un fichier de connexion à une base de données (.sde) est créé dans votre dossier de projet.

  5. Ouvrez l’outil Créer un type spatial.

    Vous pouvez utiliser la fenêtre Search (Rechercher) pour trouver l’outil ou l’ouvrir à partir du jeu d’outils Espace de travail de la boîte à outils Gestion des données.

  6. Ajoutez la connexion à la base de données que vous avez créée à l’étape 2 dans la zone de texte du paramètre Input Database Connection (Connexion à la base de données en entrée).

  7. Indiquez le mot de passe pour l’utilisateur de base de données sde dans la zone de texte du paramètre SDE User Password (Mot de passe utilisateur SDE).

    Conseil :

    Si le cluster de bases de données PostgreSQL détient déjà un rôle de connexion sde, vérifiez que le mot de passe que vous indiquez correspond à celui du rôle de connexion sde existant. Par exemple, si une géodatabase d’entreprise se trouve dans le même agrégat de bases de données, le rôle de connexion sde existe déjà et vous devez utiliser son mot de passe.

  8. Laissez vide la zone de texte du paramètre Tablespace Name (Nom de l’espace de table).

  9. Cliquez sur Run (Exécuter).

Le type, les sous-types et les fonctions ST_Geometry sont créés dans la structure de l’utilisateur sde dans la base de données que vous avez spécifiée.

Utiliser les fonctions ArcPy

Sur une machine ArcGIS Pro ou ArcGIS Server, utilisez la fonction ArcPy CreateDatabaseConnection pour créer un fichier de connexion à une base de données (.sde) qui se connecte à la base de données PostgreSQL en tant que super-utilisateur PostgreSQL. Utilisez ensuite le fichier .sde et la fonction ArcPy CreateSpatialType pour créer le type, le sous-type et les fonctions ST_Geometry dans la base de données.

  1. Téléchargez la bibliothèque st_geometry depuis My Esri et placez-la dans le répertoire PostgreSQL lib.

    Remarque :

    Si votre système d’exploitation Linux n’inclut pas libstdcc++.so.6.0.29 ou une version ultérieure de la bibliothèque, téléchargez également la bibliothèque libstdcc++.so.6 pour PostgreSQL depuis My Esri et placez-le dans le répertoire PostgreSQL lib avec la bibliothèque st_geometry.so.

    Les bibliothèques st_geometry sont destinées à des systèmes d’exploitation, des versions de PostgreSQL et des versions d’ArcGIS spécifiques.

    • L’emplacement du répertoire lib sous Linux varie selon le mode d’installation de PostgreSQL. Pour déterminer l’emplacement correct de l’installation de PostgreSQL, exécutez pg_config en tant qu’utilisateur postgres. La valeur qui est renvoyée pour PKGLIBDIR est le répertoire lib dans lequel vous devez placer le fichier st_geometry.so. Connectez-vous à la machine en tant qu’utilisateur racine pour copier le fichier dans le répertoire lib.

    • Si PostgreSQL est installé sur un serveur Windows, placez le fichier st_geometry.dll dans le répertoire %PostgreSQL%\lib sur le serveur.

  2. Exécutez la fonction CreateDatabaseConnection pour créer le fichier .sde.

    Vous devez vous connecter en tant que super-utilisateur PostgreSQL et vous devez enregistrer vos informations d’identification.

    Dans l’exemple suivant, le fichier de connexion est créé dans un répertoire nommé TempFiles, le nom du fichier de connexion est suserconnection.sde, des informations d’identification sont fournies pour le super-utilisateur et sont enregistrées avec le fichier pour se connecter à une base de données nommée pgdb dans le cluster de bases de données pginstance.

    import arcpy
    arcpy.management.CreateDatabaseConnection(
       "/user/TempFiles",
       "suserconnection.sde",
       "POSTGRESQL",
       "pginstance",
       "DATABASE_AUTH",
       "postgres",
       "Cl@rkK3nt",
       "SAVE_USERNAME",
       "pgdb"
    )
    
  3. Exécutez la fonction ArcPy CreateSpatialType pour installer le type ST_Geometry dans l’instance PostgreSQL.

    Dans cet exemple, le fichier de connexion de l’étape précédente est utilisé et le mot de passe sde est défini sur pw0rd4sde.

    import arcpy
    arcpy.management.CreateSpatialType(
       "suserconnection.sde",
       "pw0rd4sde"
    )
    
    

Le type, les sous-types et les fonctions ST_Geometry sont créés dans le schéma de l’utilisateur sde dans la base de données spécifiée dans le fichier de connexion à une base de données.