Types de données PostgreSQL pris en charge dans ArcGIS

Lorsque vous créez une table ou ajoutez une colonne à une table dans une base de données, vous définissez un type de données spécifique pour la colonne. Les types de données déterminent les éléments suivants :

  • Les valeurs que vous pouvez stocker dans la colonne
  • Les opérations que vous pouvez utiliser sur les données de cette colonne
  • La manière dont les données de cette colonne sont stockées dans la base de données

ArcGIS utilise des types de données spécifiques. Lorsque vous accédez à une table de base de données via un nœud Database Connection (Connexion à la base de données), une couche de requête ou un service Web, ArcGIS élimine tous les types de données non pris en charge. ArcGIS n’affiche pas les types de données non pris en charge et vous ne pouvez pas les modifier via ArcGIS. De la même façon, lorsque vous utilisez ArcGIS pour copier et coller des tables qui contiennent des types de données non pris en charge depuis une base de données vers une autre, ArcGIS colle uniquement les colonnes qui utilisent un type de données pris en charge.

La première colonne de la table suivante répertorie les types de données ArcGIS. La deuxième colonne répertorie le type de données PostgreSQL qu’ArcGIS crée. La troisième colonne indique les autres types de données PostgreSQL (le cas échéant) correspondant au type de données ArcGIS lorsque vous consultez une table créée en dehors d’ArcGIS (non inscrite auprès la géodatabase). La dernière colonne fournit des informations supplémentaires lorsque cela est nécessaire.

Type de données ArcGISTypes de données PostgreSQL créésAutres types de données PostgreSQL pouvant être affichésRemarques

Entier très grand

bigint

BLOB

bytea

Date

timestamp without time zone

horodatage avec fuseau horaire

Date uniquement

date

Double

numeric(p,s)

double précision

La précision (p) et l’échelle (s) spécifiées dans ArcGIS peuvent affecter le type de données obtenu créé dans la base de données. Reportez-vous à la rubrique Types de données des champs ArcGIS pour plus d’informations.

Flottant

numeric(p,s)

décimal, double précision, numérique, réel

La précision (p) et l’échelle (s) spécifiées dans ArcGIS peuvent affecter le type de données obtenu créé dans la base de données. Reportez-vous à la rubrique Types de données des champs ArcGIS pour plus d’informations.

Géométrie

ST_Geometry, Geometry (PostGIS), Geography (PostGIS)

Dans une géodatabase, le paramètre GEOMETRY_STORAGE du mot-clé de configuration utilisé lorsque vous créez la classe d’entités détermine le type de données créé dans la base de données.

Pour utiliser ST_Geometry dans une base de données (pas une géodatabase), vous devez l’installer. Consultez la section Ajouter le type ST_Geometry à une base de données PostgreSQL pour en savoir plus.

Pour utiliser le type géographie ou géométrie PostGIS, vous devez installer PostGIS dans l’agrégat de bases de données PostgreSQL, et la base de données elle-même doit être activée de telle sorte qu’elle puisse utiliser PostGIS. Consultez votre documentation PostgreSQL pour en savoir plus.

ID global

varchar(38)

Les identifiants globaux sont pris en charge uniquement dans les géodatabases.

GUID

varchar(38)

UUID

Entier long

entier

serial

ID d’objet

entier (32 bits) ou bigint (64 bits) dans une géodatabase

Serial dans une base de données

Le type de données ID d’objet ArcGIS est la colonne d’ID de ligne inscrite pour la table (ou classe d’entités). Une seule colonne par table.

Raster

bytea

Le type de données Raster ArcGIS est uniquement pris en charge dans les géodatabases.

Entier court

smallint

Texte

character varying

caractère, texte

Si vous créez un champ de texte avec un client SQL ou une application tierce et ne définissez pas de longueur (en d’autres termes, si la longueur est égale à 0), ArcGIS lit le champ comme un CLOB.

Heure uniquement

heure

heure sans fuseau horaire, heure avec fuseau horaire

Décalage de fuseau horaire

Sans objet

Non pris en charge

Types de données PostgreSQL pris en charge dans ArcGIS

Si la table contient une colonne avec un type de données non pris en charge dans ArcGIS, vous pouvez redéfinir la colonne en texte. Toutefois, ne procédez ainsi que pour consulter les valeurs de la colonne, et non si vous devez effectuer une analyse faisant appel aux valeurs de cette colonne. Par exemple, vous pouvez exécuter une instruction SELECT pour choisir les colonnes dans tableb et redéfinir en texte la colonne décimale (total) :

SELECT id, name, total::text
 FROM me.mydb.tableb;

Types de géométrie

Comme cela est indiqué dans la table, ArcGIS crée et peut manipuler trois types de données spatiales dans PostgreSQL : Esri ST_Geometry, la géométrie PostGIS et la géographie PostGIS. Les deux sections suivantes proposent davantage d’informations sur ces types de données.

ST_Geometry

Voici une description générale du type de donnée spatiale ST_Geometry : Pour obtenir des informations propres à une implémentation PostgreSQL, reportez-vous à la rubrique ST_Geometry dans PostgreSQL.

Le type de données ST_Geometry implémente les spécifications SQL 3 pour les types de données définis par l’utilisateur (UDT), qui permettent de créer des colonnes capables de stocker des données spatiales telles que la localisation d’un point de repère, d’une rue ou d’une parcelle. Il fournit un accès à la géodatabase et à la base de données en langage SQL (Structured Query Language) conforme aux normes (ISO) et Open Geospatial Consortium (OGC). Ce stockage étend les capacités de la base de données en permettant le stockage d’objets qui représentent des entités géographiques (points, lignes et polygones). Il a été conçu pour utiliser de façon efficace les ressources de la base de données, pour être compatible avec les fonctions de la base de données, telles que la réplication et le partitionnement et pour permettre un accès rapide aux données spatiales.

ST_Geometry est un résumé, une super classe non instanciée. Toutefois, ses sous-classes peuvent être instanciées. Un type de données instancié peut être défini comme une colonne de tableau pouvant accueillir des valeurs de son type.

Bien que vous puissiez définir une colonne en tant que type ST_Geometry, vous n’insérez pas de valeurs ST_Geometry dans la colonne parce qu’elle ne peut pas être instanciée. Vous insérez plutôt les valeurs de la sous-classe.

Les sous-classe de ST_Geometry sont divisées en deux catégories : sous-classes de géométrie de base et sous-classe d'ensembles homogènes. Les géométries de base comprennent les objets ST_Point, ST_LineString et ST_Polygon, alors que les ensembles homogènes comprennent les objets ST_MultiPoint, ST_MultiLineString et ST_MultiPolygon. Comme ces noms l'indiquent, les ensembles homogènes sont des ensembles de géométries de base. En plus des propriétés communes aux géométries de base, les ensembles homogènes disposent également de quelques propriétés propres.

Chaque sous-classe stocke le type de géométrie que son nom indique ; par exemple, ST_MultiPoint stocke des multi-points. Le tableau suivant fournit une liste des sous-classes et leurs descriptions :

Sous-typeDescription

ST_Point

  • Géométrie à zéro dimension, occupant une seule localisation dans l'espace de coordonnées.
  • Dispose d'une seule valeur de coordonnée x,y, est toujours simple et a une limite de valeur NULL.

ST_LineString

  • Objet linéaire stocké comme séquence de points définissant un chemin interpolé linéaire.
  • Les objets ST_LineString ont une longueur.
  • L'objet ST_LineString est simple s'il n'intersecte pas son intérieur.
  • Les extrémités (la limite) d'un objet ST_LineString fermé occupent le même point dans l'espace.
  • Un objet ST_LineString est une boucle s'il est à la fois fermé et simple.
  • Les extrémités forment normalement la limite d'un objet ST_LineString, sauf s'il est fermé auquel cas la limite est NULL.
  • L'intérieur d'un objet ST_LineString est le chemin continu entre les extrémités, sauf s'il est fermé auquel cas l'intérieur est continu.

ST_Polygon

  • Surface bidimensionnelle stockée comme une séquence de points définissant sa boucle de contour extérieur et 0 ou plus boucles intérieures.
  • Un objet ST_Polygon dispose d'une surface et est toujours simple.
  • La boucle extérieure et toutes les boucles intérieures définissent la limite d'un objet ST_Polygon, et l'espace situé entre les boucles définit l'intérieur de l'objet ST_Polygon.
  • Les boucles d'un objet ST_Polygon peuvent s'intersecter en un point tangent mais ne peuvent se croiser.

ST_MultiPoint

  • Ensemble d'éléments ST_Point.
  • A une dimension de 0.
  • Un objet ST_MultiPoint est simple si ses éléments occupent tous des espaces de coordonnées différents.
  • La limite d'un objet ST_MultiPoint est NULL.

ST_MultiLineString

  • Ensemble d'éléments ST_LineString.
  • Les objets ST_MultiLineString ont une longueur.
  • Les objets ST_MultiLineString sont simples s'ils ne s'intersectent qu'aux extrémités des éléments ST_LineString.
  • Les objets ST_MultiLineString sont non simples si les intérieurs des éléments ST_LineString s'intersectent.
  • La limite d'un objet ST_MultiLineString est constituée par les extrémités non intersectées des éléments ST_LineString.
  • L'objet ST_MultiLineString est fermé si tous ses éléments ST_LineString sont fermés.
  • La limite d'un objet ST_MultiLineString est NULL si toutes les extrémités de tous les éléments sont intersectées.

ST_MultiPolygon

  • Ensemble de polygones.
  • Les objets ST_MultiPolygon ont une surface.
  • La limite d'un objet ST_MultiPolygon est la longueur cumulée des boucles extérieures et intérieures de ses éléments.
  • L'intérieur d'un objet ST_MultiPolygon est défini par les intérieurs cumulés de ses éléments ST_Polygon.
  • La limite d'un objet ST_MultiPolygon ne peut s'intersecter qu'en un point tangent.

Sous-types ST_Geometry

Chaque sous-classe hérite des propriétés de la superclasse ST_Geometry mais possède également des propriétés qui lui sont propres. Les fonctions applicables au type de données ST_Geometry acceptent l'ensemble des types d'entités de sous-classe. Toutefois, certaines fonctions ont été définies au niveau de la sous-classe et acceptent uniquement certaines sous-classes. Par exemple, la fonction ST_GeometryN n'accepte en entrée que des valeurs de sous-type ST_MultiLinestring, ST_MultiPoint ou ST_MultiPolygon.

Type de données spatiales PostGIS

PostGIS est un produit qui spatialise les bases de données PostgreSQL. PostGIS respecte la spécification OGC relative aux entités simples pour SQL. Il utilise les représentations OGC binaires (WKB) et textuelles (WKT) de la géométrie.

PostGIS a deux options de type spatiales : géométrie et géographie. Pour les utiliser, vous devez installer PostGIS dans votre agrégat de bases de données PostgreSQL, puis employer le modèle de base de données PostGIS afin de créer la base de données de stockage de la géodatabase. Installez une version de PostGIS prise en charge par la version d’ArcGIS que vous souhaitez utiliser.

Lorsque vous utilisez un type de stockage spatial PostGIS avec ArcGIS, tenez compte des règles suivantes :

  • Vous devez utiliser le modèle de base de données PostGIS pour créer la base de données PostgreSQL que vous allez utiliser pour la géodatabase ou pour activer PostGIS dans la base de données.
    Remarque :

    Si vous créez votre géodatabase à l’aide de l’outil de géotraitement Create Enterprise Geodatabase (Créer une géodatabase d’entreprise), votre base de données est créée à l’aide d’un modèle autre que le modèle PostGIS. Par conséquent, si vous souhaitez utiliser le type géographie ou géométrie PostGIS, vous devez créer manuellement une base de données à l’aide du modèle PostGIS. Vous pouvez ensuite spécifier votre base de données existante lorsque vous exécutez l’outil de géotraitement Créer une géodatabase d’entreprise et la géodatabase sera créée dans cette base de données activée pour PostGIS.

  • L’utilisateur sde et tout autre utilisateur qui accède aux données PostGIS dans la géodatabase ou la base de données doit se voir accorder des autorisations sur des vues PostGIS spécifiques.
  • Les classes d’entités que vous créez peuvent uniquement utiliser les références spatiales répertoriées dans la vue public.spatial_ref_sys de PostGIS. Si vous spécifiez une référence spatiale qui n’y figure pas, la création de la classe d’entités échoue.
  • Vous devez spécifier un mot-clé de configuration contenant le paramètre GEOMETRY_STORAGE défini sur PG_GEOMETRY (pour la géométrie PostGIS) ou PG_GEOGRAPHY (pour la géographie PostGIS) afin de créer une classe d’entités qui utilise l’un de ces types de données spatiales.
  • Les classes d’entités d’une géodatabase dans PostgreSQL qui utilisent les types PostGIS contiennent un champ pour le stockage des courbes et des données DAO, GDB_GEOMATTR_DATA. Si vous créez une table spatiale en dehors d’ArcGIS et que vous enregistrez la table dans la géodatabase, ce champ est ajouté à votre table.
  • Le type géographie PostGIS limite la taille des formes pouvant être traitées. Consultez la PostGIS pour en savoir plus.

Accorder des privilèges pour créer des colonnes de géographie ou de géométrie PostGIS

Lorsque vous activez une base de données pour PostGIS, elle ajoute trois vues à la structure publique : geometry_columns, geography_columns et spatial_ref_sys. Vous devez accorder le privilège SELECT sur les vues geometry_columns, geography_columns et spatial_ref_sys à tous les utilisateurs de la géodatabase, y compris l’utilisateur sde.

GRANT select 
 ON public.geometry_columns 
 TO <login_name>;

GRANT select 
 ON public.geography_columns 
 TO <login_name>;

GRANT select
 ON public.spatial_ref_sys
 TO <login_name>;

Créer des classes d’entités qui utilisent un type de données spatiales PostGIS

ArcGIS utilise un paramètre de configuration pour déterminer le type de données spatiales à employer lorsque vous créez une classe d’entités. Il s'agit du paramètre GEOMETRY_STORAGE. Pour les géodatabases dans PostgreSQL, il peut être défini sur ST_GEOMETRY, PG_GEOMETRY (paramètre pour le type géométriePostGIS) ou PG_GEOGRAPHY (paramètre pour le type géographie PostGIS). Vous devez ainsi spécifier le mot-clé de configuration qui contient le paramètre GEOMETRY_STORAGE défini sur le type de données spatiales PostGIS dont vous avez besoin : PG_GEOMETRY ou PG_GEOGRAPHY.

Lorsque vous créez une géodatabase pour utiliser le type spatial ST_Geometry, la valeur du paramètre GEOMETRY_STORAGE figurant sous le mot-clé de configuration DEFAULTS est définie sur ST_GEOMETRY. Lorsque vous créez une géodatabase pour utiliser le type spatial PostGIS, la valeur du paramètre GEOMETRY_STORAGE figurant sous le mot-clé de configuration DEFAULTS est définie sur PG_GEOMETRY.

Si vous désirez stocker la plupart de vos données dans un type spatial différent, modifiez la valeur du paramètre GEOMETRY_STORAGE sous le mot-clé de configuration DEFAULTS. En revanche, pour stocker une partie de vos classes d’entités avec un type de stockage PostGIS, vous pouvez spécifier le mot-clé de configuration PG_GEOMETRY ou PG_GEOGRAPHY lors de la création de votre classe d’entités. Une fois exportés de la géodatabase, ces mots-clés apparaissent sous la forme suivante :

##PG_GEOMETRY
GEOMETRY_STORAGE    "PG_GEOMETRY"
UI_TEXT             "User Interface text description for POSTGIS geometry storage" 
END

##PG_GEOGRAPHY
GEOMETRY_STORAGE    "PG_GEOGRAPHY"
UI_TEXT             "User Interface text description for POSTGIS geography storage" 
END

Si vous utilisez l’un de ces mots-clés de configuration, les autres paramètres de stockage sont obtenus à partir du mot-clé DEFAULTS. Pour plus d’informations sur les paramètres de configuration, reportez-vous à la rubrique PostgreSQL.

Utiliser des tables de géographie ou de géométrie existantes

ArcGIS peut utiliser les tables contenant des colonnes de géographie ou de géométrie PostGIS créées par des applications externes ou à l’aide de SQL (également nommées tables tierces) tant que chaque table respecte les conditions préalables suivantes :

  • Chaque table doit contenir une seule colonne spatiale. Si tel n’est pas le cas, définissez une couche de requête ou une vue incluant uniquement l’une des colonnes spatiales.
  • Les tables ne doivent pas contenir d'autres colonnes d'un type défini par l'utilisateur.
  • Les tables doivent comporter un seul type d’entité (points, lignes ou polygones), pouvant éventuellement être de type multi-parties.
  • Chaque table doit contenir une colonne de nombres entiers, uniques, de valeur non NULL, appropriée comme colonne d’identifiant d’objet (Object ID).
  • Chaque table doit avoir un index spatial.

Pour plus d’informations sur la création de tables avec une colonne PostGIS à l’aide de SQL, consultez la documentation PostGIS.

Vous pouvez vous connecter à une base de données PostgreSQL depuis ArcGIS Pro et inscrire les tables qui contiennent des colonnes PostGIS auprès de la géodatabase. Pour plus d'informations, reportez-vous à la rubrique Inscrire une table ou une vue auprès de la géodatabase.


Dans cette rubrique
  1. Types de géométrie