Présentation rapide de l'utilisation de SQL avec ST_Geometry
Vous pouvez utiliser le langage SQL (Structured Query Language), les types de données et les formats de tables du système de gestion de base de données (SGBD) pour exploiter les informations stockées dans une géodatabase ou une base de données où le type ST_Geometry est installé. Le langage SQL est un langage de base de données qui prend en charge les définitions de données et les commandes de manipulation de données.
L'accès aux informations d'une géodatabase via SQL permet aux applications externes d'utiliser les données tabulaires gérées par la géodatabase. Ces applications externes peuvent être des applications de base de données non spatiales ou des applications spatiales personnalisées développées dans un environnement autre qu'ArcObjects.
![Attention Attention](rsrc/caution.png)
Notez que l'utilisation de SQL pour accéder à la géodatabase annule des fonctionnalités de géodatabase, telles que le versionnement, la topologie, les réseaux, les MNT, les annotations liées aux entités, ainsi que d'autres extensions d'espace de travail ou de classe. Il peut s'avérer possible d'utiliser des fonctions de SGBD, telles que les déclencheurs et les procédures stockées, afin de conserver les relations entre les tables nécessaires à certaines fonctionnalités de géodatabase. Cependant, le fait d'exécuter des commandes SQL sur la base de données sans tenir compte de ces fonctionnalités supplémentaires (il peut s'agir, par exemple, de l'exécution d'instructions INSERT pour ajouter des enregistrements à une table métier ou de l'ajout d'une colonne à une classe d'entités existante) annulera les fonctionnalités de géodatabase et pourra éventuellement altérer les relations entre les données de votre géodatabase.
En général, les directives suivantes s'appliquent lors de l'utilisation de SQL pour modifier des données spatiales ou non spatiales dans une géodatabase :
- N'actualisez pas les enregistrements à l'aide de SQL une fois que les données ont été versionnées, à moins que vous n'utilisiez SQL en association avec une vue versionnée.
- Lorsque vous actualisez des données non versionnées à l'aide de SQL, ne modifiez pas les attributs qui affectent d'autres objets dans la base de données qui utilisent le comportement de la géodatabase, tels que les classes de relations, les annotations liées aux entités, la topologie ou les réseaux.
- Exécutez une instruction COMMIT ou ROLLBACK une fois que l'instruction SQL a été exécutée pour vous assurer que les modifications sont validées dans la base de données ou annulées. Cela est vaut aussi bien pour les données d'une géodatabase que pour celles d'une base de données.
Type de stockage ST_Geometry
Le type de données SQL ST_Geometry est utilisé dans les bases de données IBM DB2, Informix, Oracle et PostgreSQL. La base de données peut contenir une géodatabase, mais cela n'est pas une obligation.
Le type de données ST_Geometry peut non seulement être utilisé avec des clients ArcGIS, mais il fournit également un accès SQL à la géométrie de classe d'entités simples des applications tierces.
ST_Geometry applique les spécifications multimédia SQL de l'OGC et de l'ISO pour les données spatiales. La référence OGC est OpenGIS Implementation Specification for Geographic information - Simple feature access - Part 2: SQL option, version 1.10. La référence ISO est ISO/IEC 13249-3 SQL multimedia and application packages - Part 3: Spatial.
Pour plus d'informations sur l'utilisation de SQL avec le type ST_Geometry dans DB2 ou Informix, consultez la documentation IBM DB2 et Informix. Pour plus d'informations sur l'utilisation de SQL avec le type ST_Geometry dans Oracle et PostgreSQL, consultez les rubriques de cette section de l'aide utilisateur d'ArcGIS.
![Astuce Astuce](rsrc/tip.png)
La section "Utilisation de types spatiaux avec SQL" de cette aide contient des exemples propres à DB2 et à Informix. Toutefois, pour obtenir des informations complètes sur l'utilisation de ST_Geometry avec ces bases de données, lisez la documentation IBM.
Identifiant de référence spatiale
Pour pouvoir créer une géométrie et l'insérer dans une table, vous devez posséder un ID de référence spatiale (SRID) valide à utiliser. Pour le type spatial pour Oracle, le SRID doit être dans la table ST_SPATIAL_REFERENCES et avoir un enregistrement correspondant dans la table SDE.SPATIAL_REFERENCES. Pour le type spatial pour PostgreSQL, il doit être dans la table public.sde_spatial_references. A partir de la version 10.1 d'ArcGIS, ces tables sont prérenseignées avec des références spatiales.
Si vous devez utiliser une référence spatiale personnalisée non présente dans la table, la méthode la plus simple consiste à charger ou à créer une classe d'entités avec les valeurs de référence spatiale valides au moyen d'ArcGIS for Desktop. Assurez-vous que la classe d'entités créée utilise le stockage ST_Geometry. Vous pourriez créer une classe d'entités vide avec les informations de référence spatiale dont vous avez besoin comme modèle. Cette opération crée un enregistrement dans les tables SDE.SPATIAL_REFERENCES et ST_SPATIAL_REFERENCES dans Oracle ou un enregistrement dans la table public.sde_spatial_references dans PostgreSQL. Interrogez la table COUCHES (Oracle) ou sde_layers (PostgreSQL) pour découvrir le SRID attribué à la couche. Vous pouvez alors utiliser ce SRID quand vous créez des tables spatiales et insérez des données à l'aide de SQL.
Dans le but d'utiliser les exemples fournis dans ce système d'aide, un enregistrement a été ajouté aux tables ST_SPATIAL_REFERENCES et sde_spatial_references pour représenter une référence spatiale inconnue. Cet enregistrement a un SRID égal à 0. Vous pouvez utiliser ce SRID pour les exemples de l'aide. Ce n'est pas un SRID officiel ; il est fourni dans le but d'exécuter l'exemple de code SQL. Il est vivement recommandé de ne pas utiliser ce SRID pour vos données de production.
Si vous décidez d'utiliser une valeur SRID différente déjà présente dans votre base de données pour exécuter ces exemples, vous devez modifier les coordonnées des exemples pour refléter la référence spatiale de votre valeur SRID.
Si vous voulez ajouter une référence spatiale à la table ST_SPATIAL_REFERENCES ou sde_spatial_references avec SQL, consultez la rubrique Création de références spatiales avec SQL.