ArcGIS Desktop

  • ArcGIS Pro
  • ArcMap

  • My Profile
  • Aide
  • Sign Out
ArcGIS Desktop

ArcGIS Online

La plateforme cartographique de votre organisation

ArcGIS Desktop

Un SIG professionnel complet

ArcGIS Enterprise

SIG dans votre entreprise

ArcGIS Developers

Outils de création d'applications de localisation

ArcGIS Solutions

Modèles d'applications et de cartes gratuits pour votre secteur d'activité

ArcGIS Marketplace

Téléchargez des applications et des données pour votre organisation.

  • Documentation
  • Support
Esri
  • Se connecter
user
  • Mon profil
  • Déconnexion

ArcMap

  • Accueil
  • Commencer
  • Carte
  • Analyser
  • Gérer les données
  • Outils
  • Extensions

Type de stockage ST_Geometry

  • Sous-classes
  • Appels de fonction ST_Geometry
  • Mode d'implémentation de ST_Geometry

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 permet un accès à la géodatabase et à la base de données en langage SQL (structured query language) conforme aux normes de l'ISO (International Organization for Standards) et de l'OGC (Open Geospatial Consortium). 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 fournir un accès rapide aux données spatiales.

Esri a implémenté un type ST_Geometry dans Oracle, PostgreSQL et SQLite. Ce type de données ST_Geometry est expliqué dans l'aide d'ArcGIS.

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.

Le diagramme suivant montre la hiérarchie du type de données ST_Geometry et de ses sous-classes :

ST_Geometry
La superclasse ST_Geometry et ses sous-classes

Sous-classes

Les sous-classes de ST_Geometry sont divisées en deux catégories : sous-classes de géométrie de base et sous-classes d'ensembles homogènes. Les géométries de base comprennent les objets ST_Point, ST_LineString et ST_Polygon, alors que l'ensemble homogène comprend 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

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.

La fonction ST_GeometryType permet d'identifier la sous-classe d'un type ST_Geometry. La fonction ST_GeometryType part d'un ST_Geometry et renvoie la sous-classe instanciée sous forme d'une chaîne de caractères. La fonction ST_NumGeometries permet de connaître le nombre d'éléments de géométrie de base compris dans un ensemble homogène ; elle part d'un ensemble homogène et renvoie le nombre d'éléments de géométrie de base qu'il contient.

Appels de fonction ST_Geometry

Les fonctions ST_Geometry dans Oracle and PostgreSQL sont implémentées dans SQL. Il s'agit d'un langage au niveau de la base de données. Dans Oracle, il s'agit du langage PL/SQL (Procedural Language Structured Query Language). Dans PostgreSQL, le langage utilisé est PL/pgSQL.

Vous accédez à la base de données directement, lors de l’accès aux colonnes ST_Geometry dans Oracle ou PostgreSQL à l’aide de fonctions SQL. La base de données doit donc pouvoir accéder à la bibliothèque ST_Geometry. Dans Oracle, la base de données engendre également un processus extproc.

Dans SQLite, les fonctions ST_Geometry sont implémentées dans C dans la bibliothèque ST_Geometry. Vous devez accéder à la bibliothèque ST_Geometry pour utiliser les fonctions ST_Geometry.

Oracle

Les fonctions sont implémentées dans PL/SQL, qui appelle les fonctions écrites en langage de programmation C dans les fichiers de bibliothèque partagés externes. Les fonctions sont appelées à partir de PL/SQL à l'aide d'un nom d'alias qui apparie le nom de la bibliothèque (dans le cas de ST_Geometry dans Oracle, st_shapelib) au nom du fichier de bibliothèque. (Pour plus d'informations, consultez la documentation relative à la commande Oracle CREATE LIBRARY.) La première fois qu'une fonction de type spatial qui requiert st_shapelib est appelée, la base de données demande au processus d'écoute d'engendrer un processus extproc pour la session SQL. Il est fourni au processus extproc l'emplacement de st_shapelib, le nom de la fonction à appeler, ainsi que ses paramètres. Le processus extproc charge st_shapelib et appelle la fonction. Lorsque la fonction externe prend fin, le processus extproc renvoie les résultats et reste actif, dans l'attente d'appels de fonction supplémentaires au cours de la session. Le processus extproc prend fin à la déconnexion de la session SQL.

Pour ce faire, la configuration suivante est requise :

  • La base de données a besoin de connaître l'emplacement du fichier contenant st_shapelib, de manière à pouvoir transmettre cette information au processus d'écoute, puis au processus extproc.
  • Si le fichier file_spec de st_shapelib dans la table user_libraries ne correspond pas à l'emplacement du fichier physique de st_shapelib sur le serveur, les opérateurs et fonctions ST_Geometry ne fonctionnent pas. Par conséquent, vous devez mettre à jour la définition de bibliothèque dans les bibliothèques utilisateur Oracle pour inclure le chemin d'accès correct de bibliothèque au fichier contenant st_shapelib à l'aide de la commande LIBRARY CREATE.
    Remarque :

    La modification de la définition du chemin d'accès à la bibliothèque invalide les corps de paquetage qui y font référence, par conséquent les corps de certaines procédures stockées de géodatabase doivent être recompilés à l'aide d'Oracle.

  • La base de données doit savoir quel service gère les requêtes envoyées au processus extproc. Cela est configuré dans le fichier tnsnames.ora.
  • Le processus extproc doit être autorisé à charger le fichier contenant st_shapelib. Pour ce faire, la variable d'environnement EXTPROC_DLLS est définie dans le fichier extproc.ora.
  • Le processus extproc (exécuté généralement en tant qu'utilisateur propriétaire d'ORACLE_HOME) doit détenir des autorisations de lecture concernant l'emplacement des fichiers de bibliothèques et des droits d'exécution sur ces fichiers.

PostgreSQL

La bibliothèque st_geometry doit être stockée dans le répertoire d'installation de PostgreSQL pour permettre à PostgreSQL d'accéder aux fonctions ST_Geometry. Vous devez copier le fichier st_geometry.dll (Windows) dans le dossier lib du répertoire d'installation de PostgreSQL. Pour les serveurs Linux, copiez le fichier st_geometry.so (Linux) dans le répertoire /usr/lib/pgsql sur le serveur PostgreSQL. Vous trouverez ces deux fichiers dans le dossier DatabaseSupport d'installation ArcMap ou ArcGIS Server. Vous pouvez également les télécharger sur My Esri.

SQLite

Vous devez charger la bibliothèque ST_Geometry et désigner son emplacement de manière à ce que le client SQLite puisse accéder aux fonctions SQL. Vous pouvez définir l'emplacement de la bibliothèque dans la variable d'environnement PATH (Windows) ou LIBPATH (Linux) du client avant de charger la bibliothèque ou spécifier le chemin d'accès lors du chargement de la bibliothèque ST_Geometry. Reportez-vous à la rubrique Charger la bibliothèque ST_Geometry SQLite pour en savoir plus.

Mode d'implémentation de ST_Geometry

ST_Geometry est implémenté en tant que type défini par l’utilisateur pouvant être utilisé dans des bases de données et des géodatabases dans IBM Db2, IBM Informix, Oracle, PostgreSQL et SAP HANA. ST_Geometry peut également être utilisé dans des bases de données SQLite, Dameng et IBM Netezza.

Chaque système de gestion de base de données prend en charge ST_Geometry comme suit :

ST_Geometry par base de données

Système de gestion de bases de donnéesDescription

Dameng

Le type ST_Geometry est inclus avec la base de données Dameng mais vous devez l’initialiser.

IBM Db2

Le module Db2 Spatial Extender, inclus par défaut par IBM avec le logiciel Db2, prend en charge ST_Geometry. Le type ST_Geometry a été développé conjointement par Esri et IBM.

Notez qu’il existe des différences dans la syntaxe SQL entre Db2 pour z/OS et Db2. Consultez la documentation Db2 pour connaître la syntaxe appropriée à la version de Db2 que vous utilisez.

IBM Informix

Le module Informix Spatial DataBlade, fourni par IBM avec le logiciel Informix, installe le type ST_Geometry dans la base de données et la géodatabase. Le type ST_Geometry est la seule possibilité de stockage de la géométrie de l'entité dans des géodatabases dans Informix. Développé conjointement par Esri et IBM, ce type de stockage hautes performances inclut un accès SQL aux données spatiales conforme aux normes ISO et OGC.

IBM Netezza

Dans Netezza, le type ST_Geometry est implémenté via la bibliothèque spatiale Netezza d’Esri (nzSpatial_Esri), qui fait partie du paquetage logiciel IBM Netezza Analytics.

Oracle

Le type de données ST_Geometry est installé lorsque vous créez une géodatabase dans Oracle. Il s'agit du type de stockage de géométries par défaut des géodatabases d'entreprise dans Oracle. Si vous n'avez pas besoin des fonctionnalités de géodatabase, vous pouvez installer le type ST_Geometry dans une base de données Oracle à l'aide de l'outil de géotraitement Créer un type spatial.

PostgreSQL

Le type de données ST_Geometry est installé lorsque vous créez une géodatabase dans PostgreSQL. Il s'agit du type par défaut de stockage de la géométrie de l'entité dans des géodatabases dans PostgreSQL. Si vous n'avez pas besoin des fonctionnalités de géodatabase, vous pouvez installer le type ST_Geometry dans une base de données PostgreSQL à l'aide de l'outil de géotraitement Créer un type spatial.

SAP HANA

L’installation de l’appareil de stockage de données SAP HANA inclut le type ST_Geometry par défaut.

SQLite

Le type de données ST_Geometry dans SQLite est implémenté avec une bibliothèque st_geometry et une colonne geometryblob. Les fonctions SQL ST_Geometry sont stockées dans la bibliothèque st_geometry et non dans la base de données.

Vous pouvez utiliser l'outil de géotraitement Create SQLite Database (Créer une base de données SQLite) pour créer une base de données SQLite qui contient le type ST_Geometry. Vous pouvez également utiliser la fonction SQL CreateOGCTables pour créer le type de données ST_Geometry dans une base de données SQLite existante.

Rubriques connexes

  • Configurer le processus extproc pour accéder à ST_Geometry dans Oracle
  • Différences de mises en œuvre SQL du type ST_Geometry

ArcGIS Desktop

  • Accueil
  • Documentation
  • Support

ArcGIS

  • ArcGIS Online
  • ArcGIS Desktop
  • ArcGIS Enterprise
  • ArcGIS
  • ArcGIS Developer
  • ArcGIS Solutions
  • ArcGIS Marketplace

A propos d'Esri

  • A propos de la société
  • Carrières
  • Blog d’Esri
  • Conférence des utilisateurs
  • Sommet des développeurs
Esri
Donnez-nous votre avis.
Copyright © 2021 Esri. | Confidentialité | Légal