Création de références spatiales avec SQL

Complexité : Avancé Exigences relatives aux données : Utilisez vos propres données

ESRI recommande de créer des références spatiales en utilisant les outils ArcGIS Desktop lors de la création de classes d'entités. ArcGIS fournit une suite d'outils complète pour cette tâche et calculera les unités et les décalages x, y, z et m pour vous permettre de conserver des données de haute précision. ESRI comprend cependant que certains utilisateurs et développeurs d'applications veulent avoir le choix lors de la création de références spatiales. Cette section décrit les outils de base de données fournis par ESRI et IBM pour la création de références spatiales.

Tous les systèmes de référence spatiale reconnus par la base de données sont stockés dans des tables système, dont certaines ont des vues modifiables. Pour les géodatabases ArcSDE pour Oracle qui utilisent un stockage de géométries de ST_Geometry, il s'agit de la table ST_Spatial_References. Dans Informix, cette table est nommée Spatial_References. Dans DB2, elle est nommée ST_Spatial_Reference_Systems. Dans PostgreSQL, il s'agit de la table sde_spatial_references, mais il existe aussi une vue de la table sde_spatial_references, st_spatial_references, dans laquelle des références spatiales peuvent être insérées.

Les fonctions internes utilisent les paramètres d'un système de référence spatiale pour convertir et mettre à l'échelle chaque coordonnée à virgule flottante de la géométrie en nombres entiers positifs à 64 bits avant le stockage. Une fois l'extraction effectuée, les coordonnées sont restaurées à leur format à virgule flottante externe.

Les coordonnées à virgule flottante sont converties en nombres entiers par soustraction des valeurs x et y fictives, ce qui les ramène à l'origine fictive, par mise à l'échelle en multipliant par les unités x,y, par l'ajout d'une demi-unité, puis par la troncature du reste.

Les coordonnées z et les mesures, facultatives, sont traitées de la même façon, si ce n'est qu'elles sont translatées des valeurs z et m fictives et mises à l'échelle à l'aide des unités z et m, respectivement.

Pour obtenir une définition de toutes les colonnes dans la table de référence spatiale dans chaque système de gestion de bases de données, consultez les rubriques sur les tables système qui leur correspondent :

Tables système d'une géodatabase dans DB2Tables système d'une géodatabase dans InformixTables système d'une géodatabase dans OracleTables système d'une géodatabase dans PostgreSQL

Le système de référence spatiale est attribué à une géométrie lors de sa construction. Le système de référence spatiale doit exister dans la table de référence spatiale. Toutes les géométries d'une colonne doivent avoir le même système de référence spatiale.

Création d'une référence spatiale dans IBM DB2

Dans DB2, la commande permettant de créer une référence spatiale est db2se create_srs (ou appelez la procédure stockée db2se.ST_create_srs). L'exemple suivant crée un enregistrement de référence spatiale avec un facteur d'échelle de 10 et en utilisant un système de coordonnées spécifique :

db2se create_srs mydb -srsName \"mysrs\" 
-srsID 100 -xScale 10 -coordsysName \"GCS_North_American_1983\"

Pour plus d'informations sur l'utilisation de cette commande, reportez-vous à la section "Creating a spatial reference system" du manuel DB2 Spatial Extender and Geodetic Extender User's Guide and Reference.

Création d'une référence spatiale dans IBM Informix

Les utilisateurs d'Informix peuvent créer un enregistrement de référence spatiale en utilisant une instruction INSERT semblable à l'exemple suivant :

INSERT INTO SDE.SPATIAL_REFERENCES (srid, description, 
auth_name, auth_srid, falsex, falsey, xyunits, falsez, 
zunits, falsem, munits, srtext, object_flags, 
xycluster_tol, zcluster_tol, mcluster_tol)
VALUES (
20, 
'GCS_North_American_1983', 
NULL, 
NULL, 
-400,
-400,
1000000000,
-100000,
100000,
-100000,
10000, 
'GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]]',
1,
0,
0,
0);

Pour plus d'informations sur la création d'une référence spatiale dans Informix, reportez-vous à la section "Using the spatial references table" du manuel IBM Informix Spatial DataBlade Module User's Guide.

Création d'une référence spatiale dans Oracle

La création d'une référence spatiale pour les tables qui utilisent le type spatial dans Oracle s'effectue via une instruction INSERT semblable à la suivante. Veillez à remplacer le SRID par une valeur unique. Dans l'exemple suivant, le SRID correspond à la valeur 1 dans la troisième ligne de code.

INSERT INTO SDE.ST_SPATIAL_REFERENCES (SR_NAME, SRID, 
X_OFFSET, Y_OFFSET, XYUNITS, Z_OFFSET, Z_SCALE, M_OFFSET, 
M_SCALE, MIN_X, MAX_X, MIN_Y, MAX_Y, MIN_Z, MAX_Z, MIN_M, 
MAX_M, CS_ID, CS_NAME, CS_TYPE, ORGANIZATION, 
ORG_COORDSYS_ID, DEFINITION, DESCRIPTION)
VALUES (
'GCS_North_American_1983', 
1,
-400,
-400,
1000000000, 
-100000, 
100000, 
-100000, 
100000, 
9.999E35,
-9.999E35, 
9.999E35, 
-9.999E35, 
9.999E35, 
-9.999E35, 
9.999E35, 
-9.999E35, 
4269, 
'GCS_North_American_1983',
'PROJECTED', 
NULL,
NULL,
'GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]]',
'ArcSDE SpRef');

Création d'une référence spatiale dans PostgreSQL

Pour créer un système de référence spatiale pour le type spatial dans PostgreSQL, utilisez une instruction INSERT semblable à l'instruction ci-dessous. Veillez à remplacer le SRID par une valeur unique. Dans l'exemple suivant, le SRID correspond à la valeur 1 dans la troisième ligne de code.

INSERT INTO sde.st_spatial_references (sr_name, srid, 
x_offset, y_offset, xyunits, z_offset, z_scale, m_offset, 
m_scale, min_x, max_x, min_y, max_y, min_z, max_z, min_m, 
max_m, cs_id, cs_name, cs_type, organization, 
org_coordsys_id, definition, description)
VALUES (
'GCS_North_American_1983',
1, 
-400, 
-400, 
1000000000,
-100000, 
100000, 
-100000, 
100000, 
9.999E35,
-9.999E35, 
9.999E35, 
-9.999E35, 
9.999E35, 
-9.999E35, 
9.999E35, 
-9.999E35, 
4269, 
'GCS_North_American_1983',
'PROJECTED', 
NULL,
NULL,
'GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]]',
'ArcSDE SpRef');

Rubriques associées


3/6/2012