Inscrire une colonne ST_Geometry

Si vous utilisez SQL pour créer une table contenant une colonne ST_Geometry, vous pouvez enregistrer la colonne pour utiliser une référence spatiale et dimensionnalité spécifiques. De la sorte, lorsque vous insérez des enregistrements avec SQL, vous ne pouvez pas insérer accidentellement des enregistrements utilisant une référence spatiale différente.

Inscrire une colonne ST_Geometry dans PostgreSQL

Utilisez st_register_spatial_column pour inscrire la colonne ST_Geometry dans une table PostgreSQL créée avec SQL. La syntaxe de la fonction st_register_spatial_column est la suivante :

SELECT st_register_spatial_column (
 '<database_name>',
 '<schema_name>',
 '<table_name>',
 '<spatial_column_name>',
 <srid>,
 <coordinate_dimension>
);

Le SRID spécifié doit figurer dans la table public.sde_spatial_references dans PostgreSQL. La dimension de coordonnée indique si les données comportent uniquement des coordonnées x, y (2), des coordonnées x, y, z (3), des coordonnées x, y, z, m (4) ou des coordonnées x, y, m (5). Par défaut, si vous n'indiquez pas de dimension de coordonnée, les données sont enregistrées comme ayant uniquement les dimensions x, y

Les étapes suivantes fournissent un exemple d'inscription d'une colonne ST_Geometry dans PostgreSQL pour utiliser un SRID et une dimensionnalité spécifiques.

Etapes :
  1. Ouvrez une invite ou un shell de commande.
  2. Connectez-vous à un éditeur SQL, puis à la base de données qui contient la table pour laquelle vous souhaitez inscrire la colonne ST_Geometry.

    Dans cet exemple, l'utilisateur horace se connecte à la base de données spatdat.

    psql spatdat horace

  3. A l'invite de commande SQL, appelez la fonction st_register_spatial_column pour inscrire la colonne spatiale d'une table et utiliser un SRID et une dimensionnalité spécifiques.

    Ici, la colonne geo des tables waypoints dans la structure cleo est inscrite avec un SRID de 104199 et une dimensionnalité x,y,z :

    SELECT sde.st_register_spatial_column(
     'spatdat',
     'cleo',
     'waypoints',
     'geo',
     104199,
     3
    );
    

    L'utilisateur horace doit bénéficier au moins des privilèges SELECT sur la table cleo.waypoints pour inscrire la colonne spatiale.

  4. Pour confirmer l'inscription correcte de la table, vous pouvez utiliser les fonctions st_isregistered_spatial_column et st_get_coord_dimension functions pour renvoyer les informations inscrites.

    La fonction st_isregistered_spatial_column renvoie 1 (vrai) si la colonne est inscrite avec le SRID spécifié.

    SELECT sde.st_isregistered_spatial_column(
     'spatdat',
     'cleo',
     'waypoints',
     'geo',
     104199
    );
    
    st_isregistered_spatial_column
    --------------------------------
    1
    

    La fonction st_get_coord_dimension renvoie les coordonnées que la table peut stocker.

    SELECT sde.st_get_coord_dimension(
     'cleo',
     'waypoints',
     'geo',
     104199
    );
    
    st_get_coord_dimension
    --------------------------------
    xyz
    

Inscrire une colonne ST_Geometry dans SQLite

Utilisez AddGeometryColumn pour ajouter une colonne ST_Geometry à une table dans SQLite et inscrivez-la avec un SRID et une dimension de coordonnées spécifiques. Voici la syntaxe à utiliser pour AddGeometryColumn :

SELECT AddGeometryColumn (
 <'main'|null>,
 <table_name>,
 <spatial_column_name>,
 <srid>,
 <geometry_type>
 <coordinate_dimension>,
 <'null'|'not null'>
);

Lorsque vous vous connectez à SQLite via un client SQL, vous vous connectez à "main". Vous pouvez spécifier "main" ou utiliser "null", qui suppose que vous vous connectez à "main". La dimension de coordonnées est xy (2), xyz (3), xyzm (4) ou xyzm (5). Si vous spécifiez une dimension de xy ou 2, il n'est pas nécessaire d'inclure la dimension dans le type de géométrie. Si vous spécifiez d'autres dimensions de coordonnées, vous devez également inclure ces informations lorsque vous précisez le type de géométrie. Vous pouvez taper le type de géométrie ou le code du type de géométrie. Les valeurs possibles sont les suivantes :

Valeurs du type de géométrie

Code

st_geometry ou geometry

0

st_point ou point

1

st_linestring ou linestring

2

st_polygon ou polygon

3

st_multipoint ou multipoint

4

st_multilinestring ou multilinestring

5

st_multipolygon ou multipolygon

6

st_geometryz ou geometryz

1000

st_pointz ou pointz

1001

st_linestringz ou linestringz

1002

st_polygonz ou polygonz

1003

st_multipointz ou multipointz

1004

st_multilinestringz ou multilinestringz

1005

st_multipolygonz ou multipolygonz

1006

st_geometrym ou geometrym

2000

st_pointm ou pointm

2001

st_linestringm ou linestringm

2002

st_polygonm ou polygonm

2003

st_multipointm ou multipointm

2004

st_multilinestringm ou multilinestringm

2005

st_multipolygonm ou multipolygonm

2006

st_geometryzm ou geometryzm

3000

st_pointzm ou pointzm

3001

st_linestringzm ou linestringzm

3002

st_polygonzm ou polygonzm

3003

st_multipointzm ou multipointzm

3004

st_multilinestringzm ou linestringzm

3005

st_multipolygonzm ou multipolygonzm

3006

Reportez-vous à la rubrique Créer des tables avec une colonne ST_Geometry pour voir comment créer une table dans SQLite et comment utiliser AddGeometryColumn pour ajouter et inscrire la colonne ST_Geometry.

Inscrire une colonne ST_Geometry dans Oracle

Dans Oracle, la création d'un index spatial dans la colonne ST_Geometry inscrit la colonne pour utiliser une référence spatiale spécifique. Reportez-vous la rubrique Créer des index spatiaux dans les tables ayant une colonne ST_Geometry pour savoir comment créer un index spatial avec SQL dans Oracle.

Thèmes connexes

5/10/2014