ArcGIS et les types spatiaux de Microsoft
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.
Géométrie et géographie
Les types de géométrie et de géographie de Microsoft offrent tous les deux un accès SQL à vos données spatiales. Les sections suivantes comparent d'autres caractéristiques des deux types spatiaux. Pour plus d'informations sur les types spatiaux de Microsoft, reportez-vous à la documentation de SQL Server.
Géométrie
- Le type de géométrie prend en charge tous les systèmes de coordonnées X/Y.
- Les calculs planaires (terre plate, euclidiens) et l'interpolation par ligne droite entre les sommets permettent d'effectuer des rendus et des comparaisons spatiales.
- Conforme à la spécification en matière d'entités simples de l'OGC (Open Geospatial Consortium, Inc.) pour la version 1.1.9 de la spécification SQL et compatible avec la norme ISO MM/SQL.
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.
Géographie
- Le type de géographie prend en charge plusieurs systèmes de coordonnées géographiques standard, tels que la latitude et la longitude GPS.
Microsoft requiert l'utilisation des SRID et les systèmes de coordonnées géographiques définis dans le dictionnaire de données SQL Server.
- Un modèle d'ellipsoïde (terre ronde) et l'interpolation Grande ellipse des segments de ligne entre les sommets permettent d'effectuer des calculs et des comparaisons spatiales.
- Utilise une étendue de couche globale (ellipsoïdale).
Les coordonnées des données ne peuvent pas dépasser l'étendue globale.
- Dans SQL Server 2008 et 2008 R2, les entités doivent être plus petites qu'un seul hémisphère.
- Avec ArcGIS, les entités ne peuvent pas avoir de coordonnées z ou m si vous utilisez SQL Server 2008 ou 2008 R2.
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 ellipse peuvent être très différents de l'interpolation linéaire planaire sur de larges étendues spatiales.
- Vous devez utiliser l'interpolation linéaire Grande ellipse pour les requêtes spatiales SQL.
Utilisation des types spatiaux de Microsoft avec ArcGIS
Utiliser les mots-clés de configuration pour spécifier des types spatiaux Microsoft
Par défaut, les géodatabases dans SQL Server utilisent le type de géométrie de Microsoft. Si vous souhaitez utiliser le type de géographie de Microsoft pour le stockage dans les géodatabases, dans les bases de données SQL Server sur site, vous devez (1) définir le paramètre GEOMETRY_STORAGE du mot-clé de configuration DEFAULTS dans la table SDE_dbtune sur GEOGRAPHY, ou (2) spécifier, lors de la création d'une classe d'entités, un mot-clé de configuration définissant le paramètre GEOMETRY_STORAGE 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. 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é.
Utilisez la commande d'administration sdedbtune pour modifier les valeurs dans la table SDE_dbtune. Cette commande peut être installée à l'aide du programme d'installation du serveur d'application ArcSDE pour SQL Server.
Lorsque vous créez des classes d'entités dans des bases de données SQL Server, choisissez le mot-clé geometry ou geography.
Inscription d'une table spatiale existe dans la géodatabase
Si vous avez utilisé une application tierce ou SQL pour créer des tables contenant des colonnes de type spatial Microsoft 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, une topologie, des réseaux géométriques, des ateliers cadastraux, des MNT ou des structures, ou qu'elle doive comporter des sous-types, des valeurs par défaut, des domaines ou des règles de validation. 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 sur l'inscription de la table auprès de la géodatabase dans ArcGIS for Desktop., reportez-vous à la rubrique Enregistrement d'une table avec la géodatabase.
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éation d'un index spatial
Pour que SQL Server crée un index spatial, il est essentiel que la table comporte une clé primaire.
Dans ArcGIS
Lors de la création, à l'aide d'ArcGIS, d'une classe d'entités avec une colonne de géométrie ou de géographie dans une géodatabase, ArcGIS crée par défaut une clé primaire groupée dans la colonne ID d'enregistrement (ObjectID) de la table métier, puis crée un index spatial à partir des valeurs définies pour le paramètre B_MS_SPINDEX du mot-clé de configuration de la table SDE_dbtune utilisée lors de la création de la classe d'entités. Lorsque la classe d'entités est inscrite comme versionnée, une clé primaire groupée est créée sur les colonnes ID d'enregistrement et ID d'état de la table des ajouts et l'index spatial est créé à partir des valeurs définies pour A_MS_SPINDEX dans le mot-clé de configuration utilisé lors de la création de la classe d'entités. La valeur par défaut pour ces deux paramètres est la suivante :
GRIDS = (MEDIUM, MEDIUM, MEDIUM, MEDIUM), CELLS_PER_OBJECT = 16
Pour plus d'informations sur la définition des valeurs dans la table SDE_dbtune, reportez-vous à la rubrique Modification du contenu de la table DBTUNE.
Lors de la création d'une classe d'entités avec une colonne spatiale de type géométrie ou géographie dans une base de données ou géodatabase à l'aide d'ArcGIS, l'emprise de la classe d'entités est calculée comme 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 l'emprise. 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 le basculement de la couche du mode E/S de chargement seul au mode E/S normal.
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.