mardi 24 avril 2012

Initialiser une base PostgreSQL/PostGIS

 

 

 

 

 

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);

  • 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;
Dans notre cas, nous saisirons :

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.