Présentation rapide de l'utilisation de SQL avec les types ST_Geometry et ST_Raster
Vous pouvez utiliser le langage SQL (Structured Query Language), les types de données et les formats tabulaires propres au SGBD pour utiliser les informations stockées dans une géodatabase. 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.
Vous pouvez exécuter des instructions SELECT sur tous les types de SGBD pris en charge pour les géodatabases, ainsi que sur les sources de données basées sur des fichiers. Les rubriques A propos de la construction d'une expression SQL et Référence SQL vous donnent les informations nécessaires sur la création d'instructions SELECT pour différentes sources de données.
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 informations dans la 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 multi-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 ou la topologie.
- 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.
Les directives précédentes s'appliquent à tout attribut, spatial ou non spatial. Ce manuel d'aide se concentre sur l'utilisation de SQL pour les sélections spatiales, la modification des données et la modification des propriétés des données stockées dans les types de stockage de données ST_Geometry et ST_Raster.
Type de stockage ST_Geometry
Le type de données SQL ST_Geometry est utilisé dans les géodatabases stockées dans DB2, Informix, Oracle et PostgreSQL. Outre le fait que ce type de données peut être utilisé dans la géodatabase, il fournit un accès SQL à la géométrie de classe d'entités simples pour les 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. 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 la section suivante.
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.
Utilisation de fonctions SQL avec ST_Geometry dans Oracle et PostgreSQL
Pour accéder à des données à l'aide de SQL, les analyser et les manipuler, vous devez utiliser les fonctions installées avec ArcSDE.
Ces fonctions peuvent être groupées selon leur utilisation.
-
Fonctions de test des relations spatiales
Ces fonctions acceptent des géométries en entrée et déterminent s'il existe une relation spécifique entre elles. Si les conditions de la relation spatiale sont remplies, ces fonctions renvoient 1 ou t pour TRUE. Si les conditions ne sont pas remplies (aucune relation n'existe), ces fonctions renvoient 0 ou f pour FALSE. Reportez-vous à la rubrique Relations spatiales pour obtenir une description de chacune de ces fonctions.
-
Fonctions exécutant des opérations spatiales
Ces fonctions partent de données spatiales, les soumettent à diverses analyses et en renvoient de nouvelles. Pour obtenir une description de ces fonctions, reportez-vous à la rubrique Relations spatiales.
-
Fonctions renvoyant les propriétés d'une géométrie
Il existe plusieurs fonctions qui prennent une ou plusieurs géométries en entrée et renvoient des informations spécifiques à leur sujet. Elles font l'objet d'une description dans Propriétés de géométrie. Certaines d'entre elles s'attachent, en fait, à déterminer si une ou plusieurs fonctions répondent à certains critères. Si la géométrie répond aux critères, la fonction renvoie 1 ou t pour TRUE. Dans le cas contraire, elle renvoie 0 ou f pour FALSE. Ces fonctions sont les suivantes :ST_EqualSRS (PostgreSQL uniquement), ST_Is3d (Oracle uniquement), ST_IsClosed, ST_IsEmpty, ST_IsMeasured (Oracle uniquement), ST_IsRing, ST_IsSimple et ST_OrderingEquals.
-
Fonctions qui créent des données spatiales ou exécutent des transformations spatiales
Ces fonctions partent d'un type de géométrie ou d'une description de géométrie et renvoient une géométrie d'un type différent. L'une de ces fonctions, ST_Transform, modifie la référence spatiale d'une géométrie dans Oracle, en transformant une référence spatiale dans les datums géographiques en une autre référence dans les mêmes datums géographiques. Les fonctions permettant de créer une géométrie à partir d'un autre type de géométrie ou d'une description de texte sont répertoriées dans le tableau suivant :
ST_LineFromShape (PostgreSQL uniquement)
ST_MPolyFromShape (PostgreSQL uniquement)
ST_PointFromText (Oracle uniquement)
ST_LineFromText (Oracle uniquement)
ST_MPolyFromText (Oracle uniquement)
ST_Curve (Oracle uniquement)
ST_PolyFromShape (PostgreSQL uniquement)
ST_MultiCurve (Oracle uniquement)
ST_PolyFromText (Oracle uniquement)
ST_GeomCollFromShape (PostgreSQL uniquement)
ST_MLineFromShape (PostgreSQL uniquement)
ST_GeomCollFromWKB (PostgreSQL uniquement)
ST_MLineFromText (Oracle uniquement)
ST_Surface (Oracle uniquement)
ST_GeomFromShape (PostgreSQL uniquement)
ST_MPointFromShape (PostgreSQL uniquement)
ST_MultiSurface (Oracle uniquement)
ST_GeomFromText (Oracle uniquement)
ST_MPointFromText (Oracle uniquement)
ST_PointFromShape (PostgreSQL uniquement)
Type de stockage ST_Raster
Vous pouvez utiliser le type de données ST_Raster dans vos géodatabases ArcSDE. Outre le fait que ce type de données peut être utilisé dans la géodatabase, il fournit un accès SQL aux données raster pour les applications tierces.
Le type ST_Raster est disponible dans les géodatabases ArcSDE Oracle, PostgreSQL et Microsoft SQL Server.
Deux catégories différentes de fonctions ST_Raster permettent d'accéder au type ST_Raster avec SQL :
- Méthodes ST_Raster et ST_PixelData
- Procédures stockées ST_RasterUtil
Fonctions ST_Raster et ST_PixelData
Ces méthodes instancient et utilisent l'objet ST_Raster.
Utilitaires de procédures stockées ST_RasterUtil
Les procédures stockées ST_RasterUtil prennent en charge la création et la maintenance du type ST_Raster. Les fonctions disponibles sont les suivantes :
ST_RasterUtil_checkLibraryVersion