Comment pouvons-nous stocker et représenter des entités géographique dans une base de données ? Dans cette leçon nous aborderons une seule approche: le Modèle d’Entité Simple défini par l’OGC.
Objectif de cette leçon: Apprendre à connaître et à utiliser le modèle SFS
L’OGC (Open Geospatial Consortium) est une organisation internationale bénévole d’élaboration de standards qui a été fondée en 1994. Au sein de l’OGC, plus de 370 organisations commerciales, gouvernementales, associatives et laboratoires de recherche à travers le monde participent au développement et à l’implémentation de standards pour les services et le contenu géospatial, le traitement de données SIG et les formats d’échange. - Wikipedia
Le Modèle Simple Feature for SQL et une méthode non topologique pour stocker de l’information spatiale dans une base de données. Il définit des fonctions pour accéder, faire des calculs et construire ces données.
Le modèle définit les données spatiales à partir des types Points, Linestring (polylignes) et Polygon (ainsi que leur aggrégation sous forme d’objets multiples).
For further information, have a look at the OGC Simple Feature for SQL standard.
Ajoutons un champ de point à notre table de personnes:
alter table people add column the_geom geometry;
Vous pouvez remarquer que le type de champ “géométrie” n’indique pas explicitement de quel type de géométrie il s’agit. C’est pourquoi nous ajoutons une contrainte:
alter table people
add constraint people_geom_point_chk
check(st_geometrytype(the_geom) = 'ST_Point'::text
OR the_geom IS NULL);
Ce code ajoute une contrainte à la table de manière à ce qu’elle n’accepte que les géométries de points ou les valeurs vides.
Créez une nouvelle table appelée cities et donnez-lui des colonnes appropriées, incluant un champ de géométrie pour stocker des polygones (les limites administratives). Assurez-vous d’avoir une contrainte géométrique sur les polygones.
A ce stade, vous pouvez également ajouter une entrée dans la table geometry_columns:
insert into geometry_columns values
('','public','people','the_geom',2,4326,'POINT');
Pourquoi ? La colonne geometry_columns est utilisée par certaines applications pour savoir quelles sont les tables de la base de données qui contiennent des données géométriques.
Note
Si la commande INSERT retourne une erreur, lancez d’abord cette requête:
select * from geometry_columns;
Si la colonne f_table_name contient la valeur people, alors cette table a déjà été enregistré et vous n’avez rien à faire de plus.
The value 2 refers to the number of dimensions; in this case, two: x and y.
La valeur 4326 indique que la table utilise une projection WGS 84 qui est référencée par le numéro 4326 (référez-vous à la discussion précédente à propos des codes EPSG).
Ajoutez une entrée dans la table geometry_columns pour la couche cities.
Maintenant que nos tables sont géométriquement adaptées, nous pouvons y stocker des géométries:
insert into people (name,house_no, street_id, phone_no, the_geom)
values ('Fault Towers',
34,
3,
'072 812 31 28',
'SRID=4326;POINT(33 -33)');
Note
Dans la nouvelle entrée ci-dessus, vous devez indiquer quelle projection (SRID) utiliser. Cette indication est obligatoire lorsqu’on enregistre un point à l’aide d’une chaîne de caractères qui n’ajoute pas automatiquement l’information de projection. Bien entendu, le nouveau point doit utiliser le même SRID que le jeu de données dans lequel il est ajouté et vous devez le spécifier.
Si à ce stade vous utilisez une interface graphique, l’indication de la projection de chaque point se ferait automatiquement. En d’autres termes, il n’y a généralement pas besoin d’ajouter la bonne projection à chaque point que vous voulez ajouter si vous avez déjà indiqué le SRID pour le jeu de données utilisé, comme nous l’avons fait auparavant.
C’est le bon moment pour ouvrir QGIS et tenter de visualiser la table people. De plus, nous pouvons essayer d’éditer/ajouter/supprimer des enregistrements et réaliser des requêtes sur la base de données pour visualiser comment la donnée est modifiée.
Pour charger une couche PostGIS dans QGIS, utilisez l’entrée de menu Couche ‣ Ajouter une couche PostGIS ou la barre d’outils:
Ce qui ouvrira la boîte de dialogue suivante:
Cliquez sur le bouton New pour ouvrir la boîte de dialogue suivante:
Définissez alors une nouvelle connexion, par exemple:
Name: myPG
Service:
Host: localhost
Port: 5432
Database: address
User:
Password:
Pour vérifier que QGIS trouve bien la base de données address et que votre compte/mot de passe sont corrects, cliquez sur Tester la connexion. Si ça fonctionne, cochez les cases après Enregistrer le nom de l’utilisateur et Enregistrer le mot de passe . Cliquez alors sur OK pour créer cette connexion.
Retournez dans la boîte de dialogue Ajouter une ou plusieurs tables PostGIS , cliquez sur Connecter et ajoutez les couches à votre projet comme d’habitude.
Elaborez une requête qui montre le nom de la personne, le nom de lrue et la position (depuis la colonne the_geom) au format texte.
Vous avez vu comment ajouter des objets spatiaux à votre base de données et comment les visualiser dans un logiciel de SIG.
Dans la prochaine leçon, nous verrons comment importer et exporter des données de la base de données.