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
USAGEsur la structure sde au groupe de connexion public. Vous pouvez révoquer ce privilège du groupe public, mais vous devez accorder le privilègeUSAGEsur 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 :
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.
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.
Placez le fichier st_geometry dans le répertoire PostgreSQL
lib.Si PostgreSQL est installé sur un serveur Windows, placez le fichier
st_geometry.dlldans le répertoire%PostgreSQL%\libsur le serveur.L’emplacement du répertoire
libsous Linux varie selon le mode d’installation de PostgreSQL. Pour déterminer l’emplacement correct de l’installation de PostgreSQL, exécutezpg_configen tant qu’utilisateur postgres. La valeur qui est renvoyée pour PKGLIBDIR est le répertoirelibdans lequel vous devez placer le fichierst_geometry.so. Connectez-vous à la machine en tant qu’utilisateur racine pour copier le fichier dans le répertoirelib.
Remarque :
Si votre système d’exploitation Linux n’inclut pas
libstdcc++.so.6.0.29ou une version ultérieure de la bibliothèque, placez également la bibliothèquelibstdcc++.so.6dans le répertoire PostgreSQLlibavec la bibliothèquest_geometry.so.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.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.
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).
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.
Laissez vide la zone de texte du paramètre Tablespace Name (Nom de l’espace de table).
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.
Téléchargez la bibliothèque
st_geometrydepuis My Esri et placez-la dans le répertoire PostgreSQLlib.Remarque :
Si votre système d’exploitation Linux n’inclut pas
libstdcc++.so.6.0.29ou une version ultérieure de la bibliothèque, téléchargez également la bibliothèquelibstdcc++.so.6pour PostgreSQL depuis My Esri et placez-le dans le répertoire PostgreSQLlibavec la bibliothèquest_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
libsous Linux varie selon le mode d’installation de PostgreSQL. Pour déterminer l’emplacement correct de l’installation de PostgreSQL, exécutezpg_configen tant qu’utilisateur postgres. La valeur qui est renvoyée pour PKGLIBDIR est le répertoirelibdans lequel vous devez placer le fichierst_geometry.so. Connectez-vous à la machine en tant qu’utilisateur racine pour copier le fichier dans le répertoirelib.Si PostgreSQL est installé sur un serveur Windows, placez le fichier
st_geometry.dlldans le répertoire%PostgreSQL%\libsur le serveur.
Exécutez la fonction
CreateDatabaseConnectionpour 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" )Exécutez la fonction ArcPy
CreateSpatialTypepour 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.