Prérequis
- Une instance PostGreSQL fonctionnelle
- Le cartouche PostGIS installé
Préparation de la base
su postgres createdb mabase createlang plpgsql mabase psql -d mabase -f /path/to/postgresql/version/share/contrib/postgis.sql psql -d mabase -f /path/to/postgresql/version/share/contrib/spatial_ref_sys.sql
Création des tables
psql mabase CREATE TABLE test (id serial PRIMARY KEY,genre text);
Ajout de la colonne géométrique à la table - AddGeometryColumn()
Pour l'instant notre table est vide, nous allons lui ajouter une troisième colonne où seront stockées nos données géométriques.Nous aurons recours pour cela à la fonction AddGeometryColumn() de PostGIS dont la synthaxe générale est :
AddGeometryColumn( Table, Colonne_Geometrique, SRID, Type_Geometrie, Dimension);où
- Table est le nom de la table à laquelle doit être ajoutée la colonne géométrique;
- Colonne_Geometrique est le nom de la colonne géométrique;
- Type_Geometrie est le le type de géométrie possible:
- SRID est l'identifiant spatial de projection selon le système de projection choisi.
A titre d'exemple pour le Lambert II Carto Etendu, srid=27852; - Dimension est la dimension des objets géométriques 2D ou 3D ou 4D;
SELECT AddGeometryColumn( 'test', 'geom', -1, 'GEOMETRY', 2 );
Avec cette requête, nous avons ajouté la Colonne géométrique geom à la Table 'test'.
Comme nous n'utilisons ici aucun système de projection référencé, nous restons donc dans le plan 2D orthonormal par défaut, nous précisons juste SRID=-1.
Le type de données géométriques (Type_Geometrie) que nous souhaitons enregistrer peut-être de n'importe quel type. Nous préciserons donc par défaut GEOMETRY.
Enfin, nous sommes en 2 Dimensions.
Note
Il aurait été tout à fait possible de créer la table test en faisant directement
CREATE TABLE test (id serial PRIMARY KEY,genre TEXT,geom GEOMETRY);
Mais il y aurait alors eu un perte concernant les méta-données sur les objets géométriques concernant le type, le srid, la dimension.
Il est donc préférable d'avoir recours à la fonction AddGeometryColumn() pour pouvoir tirer profit de ces métadonnées.