Types spatiaux de SQL Server et ArcGIS

Les géodatabases prennent en charge le stockage de données vectorielles à l’aide des types géométrie et géographie de Microsoft dans Microsoft SQL Server. Ces types sont automatiquement disponibles dans SQL Server ; leur utilisation ne nécessite aucune installation distincte. Vous pouvez également utiliser ArcGIS pour accéder aux tables de base de données contenant des champs (colonnes) géométrie et géographie.

Utilisez le type de stockage de géométrie avec ArcGIS si l'une des conditions suivantes s'applique :

  • Le système de coordonnées à utiliser ne correspond pas à un système de coordonnées géographiques ou n’est pas défini dans le dictionnaire de données SQL Server.
  • Vous souhaitez stocker des valeurs z ou m avec la forme.

Utilisez le type de stockage de géographie avec ArcGIS si l'une des conditions suivantes s'applique :

  • Le système de coordonnées à utiliser est défini dans le dictionnaire de données SQL Server.
  • Les données couvrent de larges étendues spatiales et vous devez utiliser des calculs de surface et de longueur SQL.
  • Vous devez utiliser une interpolation d’arc de grande ellipse pour les requêtes spatiales SQL.

    Les calculs de surface et de longueur SQL qui utilisent une interpolation d’arc de grande ellipse peuvent être très différents de ceux qui utilisent une interpolation linéaire planaire sur de vastes étendues spatiales.

Utiliser des mots-clés de configuration pour spécifier des types spatiaux

Par défaut, les géodatabases dans SQL Server utilisent le type spatial géométrie. Pour utiliser le type géographie pour le stockage des classes d’entités dans des géodatabases dans SQL Server, effectuez l’une des opérations suivantes :

  • Si la majorité de vos utilisateurs utilisent la plupart du temps le type géographie pour leurs données spatiales, remplacez le paramètre de configuration GEOMETRY_STORAGE sous le mot-clé de configuration DEFAULTS par GEOGRAPHY. Toutes les classes d’entités créées dans la géodatabase utilisent le type géographie par défaut. Plus plus d'informations, reportez-vous à la rubrique Modifier les mots-clés de configuration.
  • Si seulement une partie des données sont stockées dans le type géographie, spécifiez un mot-clé de configuration désignant un paramètre de configuration GEOMETRY_STORAGE de valeur GEOGRAPHY lorsque vous créez des classes d’entités. Un mot-clé vous est proposé (GEOGRAPHY), mais vous pouvez créer un mot-clé personnalisé.

Choisissez le mot-clé geometry ou geography lorsque vous créez des classes d’entités dans une base de données SQL Server (et non une géodatabase).

Inscrire une table spatiale existante auprès de la géodatabase

Si vous avez utilisé une application tierce ou SQL pour créer des tables contenant des champs de type spatial SQL Server dans la base de données où votre géodatabase est stockée, vous pouvez inscrire ces tables auprès de la géodatabase pour bénéficier des fonctionnalités de géodatabase, telles que les classes de relations, la topologie, les réseaux de distribution et les ateliers parcellaires ou avoir des sous-types, règles de validation, domaines ou valeurs par défaut. A cet effet, chaque table doit remplir les conditions préalables suivantes :

  • La table doit appartenir à l'utilisateur qui l'inscrit.
  • La table doit contenir un seul champ spatial de type géométrie ou géographie.
  • Toutes les formes du champ doivent être de même type spatial (points, lignes, polygones, multipoints, multichaînes ou multipolygones).

    L’ajout au champ de formes de types différents à l’aide de SQL après l’inscription de la table auprès de la géodatabase n’est pas pris en charge et entraîne un comportement imprévisible de la classe d’entités.

  • Toutes les formes du champ doivent utiliser le même identifiant de référence spatiale (SRID).
  • Le SRID spécifié lors de l'inscription doit figurer dans la table système SDE_spatial_references. Si tel n'est pas le cas, la projection doit être définie au moment de l'inscription.
  • Si la table contient une clé primaire, elle doit être groupée.
Remarque :

L'activation d'une géodatabase dans une base de données existante ne permet pas d'inscrire automatiquement des tables existantes auprès de la géodatabase. Les tables ou classes d’entités qui doivent faire partie de la géodatabase doivent être inscrites séparément auprès de la géodatabase.

Créer un index spatial

Pour que SQL Server puisse créer un index spatial sur une table, cette dernière doit comporter une clé primaire.

Dans ArcGIS

Si vous utilisez ArcGIS pour créer une classe d’entités avec un champ géométrie ou géographie, ArcGIS crée une clé primaire agrégée sur le champ d’identifiant d’objet de la table métier par défaut. ArcGIS génère ensuite un index spatial à l’aide des valeurs par défaut de SQL Server. Si la classe d’entités est inscrite comme pour un versionnement traditionnel, une clé primaire agrégée est créée sur les champs d’identifiant d’objet et d’identifiant d’état de la table des ajouts et l’index spatial est généré.

ArcGIS calcule la zone d’emprise de la classe d’entités avec un champ spatial géométrie ou géographie comme étendue des données à indexer. Les entités situées à l’extérieur de cette plage ne sont pas indexées mais sont renvoyées dans les requêtes spatiales. Si la classe d'entités n'est pas définie, la plage maximale des coordonnées du système de référence spatiale de la classe d'entités est utilisée pour la zone de contour. Vous pouvez définir ou recalculer l'étendue des classes d'entités dans la boîte de dialogue Propriétés de la classe d'entités. Si la classe d'entités se trouve dans une géodatabase, l'emprise est ajustée sur l'étendue la plus récente dès que l'index spatial est supprimé, puis recréé.

En-dehors d'ArcGIS

Pour les tables spatiales créées en dehors d'ArcGIS (par exemple celles créées à l'aide de SQL), vous devez créer une clé primaire sur la table et créer un index spatial à l'aide de SQL. Pour des instructions et des exemples, consultez la documentation Microsoft SQL Server.

ArcGIS ajoute un champ pour stocker les éléments géométriques supplémentaires.

Les types de géométrie et de géographie ne peuvent pas stocker tous les types d'éléments géométriques que les géodatabases doivent gérer. Ainsi, lorsque vous créez ou inscrivez une classe d’entités qui utilise le type de stockage géométrie ou géographie dans une géodatabase dans SQL Server, ArcGIS ajoute un champ à la table métier pour stocker ces éléments géométriques supplémentaires. Le nom de ce champ est gdb_geomattr_data. Parmi les éléments géométriques supplémentaires, on compte les suivants :

  • Objets paramétriques tels que des arcs circulaires et des courbes de Bézier créés avec des outils de mise à jour avancés
  • Identifiants PointID
  • Entités multipatch
  • Faces surfaciques de Extension ArcGIS Spatial Analyst

Lorsqu’ArcGIS détecte que la source de données contient ces éléments géométriques supplémentaires, une simple représentation géométrique est stockée dans le champ shape et les données non modifiées (y compris les éléments supplémentaires) sont stockées dans le champ gdb_geomattr_data.

Si vous inscrivez une table ou une vue contenant un champ intitulé gdb_geomattr_data, les données de ce champ doivent correspondre aux éléments géométriques associés à l’objet.

Unités de géographie SQL Server dans ArcGIS

Les mesures des données géographiques sont généralement exprimées en mètres. L’unité de mesure est indiquée dans la table sys.spatial_ref_system ; vérifiez les unités utilisées avec la valeur EPSG (European Petroleum Survey Group) associée aux données.