ArcGIS applique certaines règles au moment de la connexion à une source de données. Les règles suivantes s'appliquent lorsqu'ArcGIS se connecte aux données d'une base de données et les lit :
Noms des objets
Les systèmes de gestion de bases de données ont différentes définitions des caractères acceptables pour les noms d'objet. La plupart doit commencer par une lettre et ne peut pas contenir d'espaces, de barres obliques inverses ou de mots-clés SGBD réservés. Certains systèmes autorisent les caractères spéciaux, tels que les barres obliques (/), les traits de soulignement (_), les symboles dièses ($), les tirets (-), les points (.) ou les majuscules et minuscules. Le SGBD vous autorise parfois à utiliser des caractères spéciaux, des mots-clés réservés ou à forcer l'utilisation de noms en majuscules, en minuscules, ou présentant des minuscules et des majuscules, si vous entourez le nom d'objet de délimiteurs, tels que des guillemets doubles.
Toutefois, ArcGIS ne délimite pas les noms d'objet. Ne créez pas de tables, classes d'entités, bases de données, utilisateurs*, rôles ou d'autres noms d'objet nécessitant des délimiteurs si vous pensez l'utiliser avec ArcGIS. L'objet sera créé dans la base de données, mais vous ne pouvez pas y accéder depuis ArcGIS.
*Les noms d'utilisateur SQL Server contenant des caractères spéciaux sont délimités de façon à prendre pleinement en charge les groupes Active Directory et les identifiants authentifiés Windows.
Longueur du nom
ArcGIS peut lire et (dans certains cas) créer des objets de base de données, tels que des tables, vues et utilisateurs. La longueur maximale du nom qu'ArcGIS autorise pour ces objets est répertoriée ici.
Le nombre de caractères indiqué part du principe que le texte ANSI est utilisé. Les caractères UTF-8 utilisent au moins deux fois plus d'octets que les caractères ANSI, ce qui réduit le nombre de caractères autorisés.
ALTIBASE | DB2 | Informix | Netezza | Oracle | PostgreSQL | SAP HANA | SQL Server | Teradata | |
---|---|---|---|---|---|---|---|---|---|
Nom de base de données | 31 | 8 | 31 | 31 | 30 | 31 | 31 | 31 | 31 |
Nom de champ (colonne) | 31 | 31 | 31 | 31 | 30 | 31 | 31 | 31 | 31 |
Nom d'index | 40 | 128 | 128 | N/D | 30 | 63 | 127 | 128 | 128 |
Mot de passe | 22 (ALTIBASE sur Windows) 16 (ALTIBASE sur les systèmes d'exploitation autres que Windows) | 31 | 31 | 31 | 31 | 31 | 127 | 31 | 30 |
Nom de la table ou de la classe d'entités | 40 | 128 | 128 | 128 | 30 | 63 | 127 | 128 | 128 |
Nom d'utilisateur | 31 | 30 | 31 | 31 | 30 | 31 | 31 | 31 | 31 |
Nom de vue | 40 | 128 | 128 | 128 | 30 | 63 | 127 | 128 | 128 |
Validation de la géométrie
Lorsque vous créez des données dans une base de données à l'aide d'un client ArcGIS, ArcGIS valide la géométrie en fonction de règles spécifiques. Si la géométrie que vous construisez dans un client ArcGIS n'est pas valide, ArcGIS ne vous autorise pas à l'insérer dans la base de données.
Les fonctions constructeur ST_Geometry Esri et IBM et l'API ArcGIS utilisent la bibliothèque de formes Esri pour valider les données géométriques lorsque l'entité est créée. Par conséquent, même si vous créez une forme ST_Geometry Esri ou IBM avec SQL, les règles de validation sont appliquées et les géométries non valides ne sont pas validées dans la base de données.
D'autres types spatiaux, tels que SDO_Geometry, la géométrie PostGIS et la géométrie ou la géographie Microsoft SQL Server, possèdent leurs propres fonctions constructeur et utilisent leurs propres règles de vérification de la géométrie. Ces règles peuvent être différentes de celles appliquées par ArcGIS. Les clients ArcGIS vérifient la géométrie au moment de la lecture des données et n'affichent pas les géométries qui enfreignent les règles de validation de la géométrie ArcGIS. Si vous vous connectez à une base de données qui contient des données créées en dehors d'ArcGIS, vous devez connaître les règles appliquées par ArcGIS.
Règles de validation pour les points
- La surface et la longueur des points sont 0.0.
- L'enveloppe d'un seul point est égale aux valeurs x,y du point.
- L'enveloppe d'un point multi-parties est l'emprise minimale.
Règles de validation pour les lignes simples ou les chaînes de lignes
- Chaque partie doit avoir au moins deux points distincts.
- Chaque partie ne peut pas se croiser. Les points de début et les extrémités peuvent être identiques, mais l'anneau résultant n'est pas traité comme un polygone.
- Les parties peuvent se toucher aux extrémités.
- La longueur est la somme de toutes les parties.
Règles de validation pour les lignes ou les chaînes non structurées
- Les lignes peuvent se croiser.
- Chaque partie doit avoir au moins deux points distincts.
- La longueur est la somme de toutes les parties.
Règles de validation et opérations pour les polygones
- Les arcs pendants ne sont pas valides.
- Les segments de ligne qui composent le polygone doivent être fermés (les coordonnées z aux points de début et aux extrémités doivent également être identiques) et ne pas se couper.
- Pour les polygones avec des trous, les trous doivent se trouver entièrement dans la limite externe. Les trous qui se trouvent à l'extérieur de la limite externe ne sont pas valides.
- Un trou qui touche une limite externe à un seul point commun est converti en une inversion du polygone.
- Plusieurs trous qui se touchent à des points communs sont fusionnés en un seul trou.
- Les polygones multi-parties ne peuvent pas se chevaucher. Toutefois, deux parties peuvent se toucher à un point.
- Les polygones multi-parties ne peuvent pas partager de limite commune.
- Si deux anneaux ont une limite commune, ils sont fusionnés en un seul anneau.
- Le périmètre de géométrie total, y compris les limites de tous les trous dans les polygones en anneau, est calculé et stocké comme longueur de la géométrie.
- La surface est calculée.
- L'enveloppe est calculée.
- Les points d'un polygone sont stockés dans le sens anti-horaire bien que les clients ArcGIS puissent renvoyer des points dans un sens ou dans l'autre. Si vous générez un polygone qui contient des coordonnées dans le sens horaire, ArcGIS modifie la rotation pour s'assurer que les coordonnées suivent un sens anti-horaire.
Dans cet exemple, le point de départ est a et la description correcte des coordonnées est a, b, c, d, a.
- Un polygone peut avoir des inversions. Il s'agit d'espaces vides à l'intérieur du polygone qui touchent la limite externe.
- Les polygones inversés ont un anneau intérieur qui touche la limite externe. Il ne s'agit pas polygones en anneau.
- Lorsqu'un polygone comporte un trou en anneau, la limite externe est lue en premier. Les points des trous sont stockés dans le sens opposé de la limite externe.
Dans l'illustration suivante, la description de la limite externe est a, b, c, d, a et la description du trou est e, f, g, h, e. Pour l'ensemble du polygone, l'entité est stockée sous la forme a,b,c,d,a,e,f,g,h,e.
- Si deux trous se touchent à un point, ils sont traités comme un seul trou, et non deux.
Dans cet exemple, les deux surfaces intérieures sont un trou unique parce qu'elles partagent un point commun, g.
- La fusion des polygones et des polygones avec trous peut devenir assez complexe, comme le montre l'illustration prochaine. La limite externe est un lac avec un îlot. Un petit lac se trouve sur l'îlot.
Il est possible de représenter ces polygones comme une, deux ou trois entités. Vous pouvez stocker chaque polygone en tant qu'entité distincte. Le lac le plus vaste est un polygone en anneau. La limite du grand lac est la limite externe tandis que l'îlot est la limite du trou en anneau seul. L'îlot est également un polygone en anneau. La limite de l'îlot est la limite externe tandis que le petit lac est le trou. Le petit lac est un polygone unique.
Si les lacs sont les entités importantes, une entité avec un trou représente le grand lac, alors qu'une deuxième forme représente le petit lac. Vous pouvez également utiliser un polygone multi-parties pour représenter l'entité. La première partie de polygone est le grand lac avec un trou en anneau qui représente l'îlot. La deuxième partie est le petit lac.
- Les géométries NIL sont valides et jouent le rôle d'espaces réservés. Elles vous permettent de disposer d'une ligne d'attributs sans géométrie correspondante. Pour obtenir une géométrie NIL, vous pouvez par exemple demander l'intersection de deux polygones qui ne se coupent pas.
Comme les surfaces A et B ne se touchent pas, le résultat d'une requête d'intersection produit une géométrie vide.
- Les entités possèdent des dimensions. Une entité avec uniquement les coordonnées x,y est considérée comme bidimensionnelle. Une entité qui a des coordonnées z ou des mesures est tridimensionnelle. Une entité peut également comporter une mesure NIL.
Métadonnées spatiales
Les géodatabases stockent des métadonnées sur les données spatiales qu'elles contiennent. Les clients ArcGIS peuvent lire des informations concernant le type d'entité de la classe d'entités (par exemple, des points, lignes ou polygones), la dimensionnalité (coordonnées x, y, z et m), la référence spatiale, l'identifiant unique et l'étendue de la classe d'entités à partir des tables système de la géodatabase. Ces tables ne sont pas disponibles lorsqu'ArcGIS se connecte à une classe d'entités dans une base de données. C'est pour cela qu'ArcGIS doit obtenir ces informations auprès d'autres sources.
Lorsque vous faites glisser une classe d'entités (table spatiale) vers ArcMap, une couche de requête est créée. Pour définir la couche de requête, ArcMap effectue les actions suivantes :
- Il interroge la base de données pour obtenir des informations concernant la table spatiale, telles que la dimensionnalité, la référence spatiale et le type de géométrie.
- Si ces informations ne sont pas définies pour la table dans son ensemble, ArcMap lit la première ligne de la table et utilise les informations provenant de cette entité.
- Si la référence spatiale, le type de géométrie ou la dimensionnalité ne peuvent pas être déterminés en examinant la première ligne. Par exemple, si la table ne contient aucune donnée ou si la ligne utilise une référence spatiale personnalisée, vous êtes invité à fournir ces informations à utiliser pour la définition de couche.
- ArcMap interroge la base de données pour trouver une colonne non nulle pouvant être utilisée comme colonne d'identifiant unique (ObjectID) pour les lignes dans la table spécifiée. Si aucune ligne correspondante n'est trouvée, vous serez invité à définir un ObjectID pour la table.
- Enfin, ArcMap calcule l'étendue de la couche lorsque vous l'ajoutez à la carte.
Comme les éléments affichés dans ArcMap sont basés sur une couche de requête, vous pouvez ouvrir la définition de couche de requête et la changer. Par exemple, si votre classe d'entités contient des points et des polygones, vous pouvez ouvrir la définition de couche de requête et sélectionner le type de géométrie à afficher. De la même façon, si votre classe d'entités contient plusieurs colonnes spatiales, vous pouvez ouvrir la définition de couche de requête et modifier la requête de manière à inclure une des autres colonnes spatiales à la place. Sachez néanmoins que la requête ne peut pas être modifiée de sorte à afficher des types de données non pris en charge.