Les géodatabases prennent en charge le stockage de données vectorielles à l'aide des types de géométrie et de géographie de Microsoft. Ces types sont 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 colonnes de géométrie et de géographie.
Vous pouvez utiliser le type de stockage de géométrie avec ArcGIS si l'une des conditions suivantes s'applique :
- Le système de coordonnées que vous voulez utiliser n'est pas un système de coordonnées géographiques ou n'est pas défini dans le dictionnaire de données SQL Server.
- Vous utilisez SQL Server 2008 ou 2008 R2 et souhaitez stocker des valeurs z ou m avec la forme.
Vous pouvez utiliser le type de stockage de géographie avec ArcGIS si l'une des conditions suivantes s'applique :
- Le système de coordonnées que vous voulez utiliser est défini dans le dictionnaire de données SQL Server.
- Vous utilisez SQL Server 2008 ou 2008 R2 et n'avez pas besoin de stocker des valeurs z ou m pour les entités.
- Vous utilisez SQL Server 2012, pour lequel les valeurs z et m sont prises en charge avec ArcGIS.
- Vos données couvrent de larges étendues spatiales et vous devez utiliser des calculs de surface et de longueur SQL.
Les calculs de surface et de longueur SQL qui utilisent l'interpolation linéaire Grande elliptique peuvent être très différents de ceux qui utilisent l'interpolation linéaire planaire sur de vastes étendues spatiales.
- Vous devez utiliser l'interpolation linéaire Grande ellipse pour les requêtes spatiales SQL.
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 de géométrie. Pour utiliser le type de géographie pour le stockage dans des géodatabases dans SQL Server, effectuez l'une des opérations suivantes :
- Définissez le paramètre de configuration GEOMETRY_STORAGE sous le mot-clé de configuration DEFAULTS sur GEOGRAPHY. Vous ne devez modifier le paramètre GEOMETRY_STORAGE du mot-clé DEFAULTS que si la plupart des utilisateurs utilisent essentiellement la géographie pour leurs données.
- Spécifiez un mot-clé de configuration désignant un paramètre de configuration GEOMETRY_STORAGE correspondant à GEOGRAPHY lorsque vous créez des classes d'entités. Si une partie seulement de vos données est stockée avec le type géographie, désignez un mot-clé distinct lors de la création de la classe d'entités. Un mot-clé vous est proposé (GEOGRAPHY), ce qui ne vous empêche pas de créer votre propre mot-clé.
Lorsque vous créez des classes d'entités dans une base de données SQL Server (et pas une géodatabase), choisissez le mot-clé geometry ou geography.
Inscription d'une table spatiale auprès de la géodatabase
Si vous avez utilisé une application tierce ou SQL pour créer des tables contenant des colonnes de type spatial SQL Server dans votre géodatabase, vous pouvez inscrire ces tables auprès de la géodatabase pour bénéficier des fonctionnalités de géodatabase, telles que des classes de relations, la topologie, des réseaux géométriques et des ateliers parcellaires ou avoir des sous-types, tels que des règles de validation, des domaines ou des valeurs par défaut. A cet effet, chaque table doit remplir certaines conditions préalables :
- La table doit appartenir à l'utilisateur qui l'inscrit.
- La table doit contenir une seule colonne spatiale de type géométrie ou géographie.
- Toutes les formes dans la colonne doivent être de même type spatial, qu'il s'agisse des points, des lignes, des polygones, des multipoints, des multichaînes ou des multipolygones.
L'ajout, à la colonne de formes, d'un type différent à l'aide de SQL et ce, après l'inscription de la table dans la géodatabase, n'est pas non plus pris en charge. La classe d'entités pourrait alors se comporter de manière imprévisible.
- Toutes les formes de la colonne 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.
Pour plus d'informations, reportez-vous à la rubrique Inscrire une table auprès de la géodatabase.
Créer un index spatial
Pour que SQL Server crée un index spatial, il est essentiel que la table comporte une clé primaire.
Dans ArcGIS
Lorsque vous utilisez ArcGIS pour créer une classe d'entités avec une colonne de géométrie ou de géographie, ArcGIS crée une clé primaire agrégée dans la colonne IdObjet de la table métier par défaut. Ensuite, ArcGIS génère un index spatial à l'aide des paramètres SQL Server par défaut. Lorsque la classe d'entités est inscrite comme versionnée, une clé primaire agrégée est créée dans les colonnes IdObjet et ID d'état de la table des ajouts et l'index spatial est généré.
ArcGIS calcule la zone de contour de la classe d'entités avec une colonne spatiale de géométrie ou de géographie selon l'étendue des données à indexer. Toutes 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 à partir de l'onglet Etendue de l'entité de 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. Voici la syntaxe SQL pour la création d'un index spatial sur une table contenant une colonne de type géométrie :
CREATE SPATIAL INDEX <index_name>
ON <table> (<spatial column>)
USING GEOMETRY_GRID
WITH (
BOUNDING_BOX = minx,miny,maxx,maxy),
GRIDS = (low|medium|high, low|medium|high, low|medium|high, low|medium|high),
CELLS_PER_OBJECT = n,
<other regular btree index options like filegroups, fill factors, etc>
)
La syntaxe suivante permet de créer un index spatial dans une colonne de géographie :
CREATE SPATIAL INDEX <index_name>
ON <table> (<spatial column>)
USING GEOGRAPHY_GRID
WITH (
GRIDS = (low|medium|high, low|medium|high, low|medium|high, low|medium|high),
CELLS_PER_OBJECT = n,
<other regular btree index options like filegroups, fill factors, etc>
)
Limites connues de l'utilisation de géographie SQL Server avec ArcGIS
La liste suivante indique les points à prendre en compte lors du stockage de données de géographie SQL Server dans votre géodatabase d'entreprise :
- Si vous utilisez SQL Server 2008 ou 2008 R2, ArcGIS ne peut pas stocker de valeurs z ou m dans le type de données de géographie. Par conséquent, lors de l'importation de données existantes dans la géodatabase, un fichier de formes ou une classe d'entités d'une autre géodatabase par exemple, et que le stockage doit avoir lieu avec le type de données géographiques, le jeu de données entrant ne peut contenir ni des attributs 3D (z), ni des attributs de mesure (m).
Les attributs z et m doivent être désactivés avant l'importation des données dans une géodatabase dans SQL Server 2008 ou 2008 R2. Les données comportant des attributs de mesures ou 3D peuvent également être importées dans les classes d'entités qui utilisent le type de stockage binaire compressé ou de géométrie, ou dans des géodatabases dans SQL Server 2012.
- Les mesures des données géographiques sont généralement indiquées en mètres. L'unité de mesure est indiquée dans sys.spatial_ref_system ; vérifiez les unités utilisées avec la valeur EPSG associée à vos données.
- Un zoom sur une étendue globale dans une classe d'entités de géographie dans SQL Server 2008 peut générer un filtre spatial qui enfreint la règle de l'hémisphère ou dont les coordonnées se trouvent en dehors de l'étendue géographique valide, auquel cas la création de la forme échouera et la requête ne renverra aucun résultat.