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.
- Ouvrez une invite ou un shell de commande.
- 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
- 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.
- 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.