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. La dernière colonne fournit des informations supplémentaires lorsque cela est nécessaire.
types de données ArcGIS | Types de données PostgreSQL créés | Autres types de données PostgreSQL pouvant être affichés | Remarques |
---|---|---|---|
BLOB | bytea | ||
Date | timestamp without zone | timestamp | |
Double | numeric(p,s) | big serial, double precision | La précision et l’échelle 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) | La précision et l’échelle 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é 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) | Pris uniquement en charge dans les géodatabases. | |
GUID | varchar(38) | UUID | |
Entier long | entier | serial | |
ID d’objet | Integer dans une géodatabase Serial dans une base de données | L'identifiant d'objet de type ArcGIS est la colonne d'ID de ligne enregistrée pour la table (ou classe d'entités). Une seule colonne par table. | |
Raster | bytea | Les rasters sont uniquement pris en charge dans les géodatabases. | |
Entier court | smallint | real | |
Texte | character varying | character, varchar, text | 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. |
Si votre 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 si vous souhaitez consulter les valeurs de la colonne, et non si vous devez effectuer des analyses 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 offre à l’organisation internationale un accès à la base de données et à la géodatabase en langage SQL (structured query language) conforme aux normes (ISO) et OGC (Open Geospatial Consortium, Inc. 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 puisqu'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-type | Description |
---|---|
ST_Point |
|
ST_LineString |
|
ST_Polygon |
|
ST_MultiPoint |
|
ST_MultiLineString |
|
ST_MultiPolygon |
|
Notez que 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 votre géodatabase. Veillez à installer 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 les privilèges 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 dont vous avez besoin : PG_GEOMETRY ou PG_GEOGRAPHY.
Par défaut, les nouvelles classes d'entités utilisent le stockage ST_Geometry. Pour stocker la plupart de vos données avec les types de stockage PostGIS, définissez la valeur du paramètre GEOMETRY_STORAGE du 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
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 PostGIS.
Vous pouvez vous connecter à une base de données PostgreSQL depuis ArcGIS Desktop 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.
Vous avez un commentaire à formuler concernant cette rubrique ?