Important

La traduction est le fruit d’un effort communautaire auquel vous pouvez vous joindre. Cette page est actuellement traduite à 80.00%.

16.2. Leçon : Modèle d’Entité Simple

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

16.2.1. Qu’est-ce-que l’OGC ?

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

16.2.2. Quel est le modèle SFS ?

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.

../../../_images/ogc_sfs.png

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.

16.2.3. Ajoutez un champ géométrique à la table

Ajoutons un champ de point à notre table de personnes:

alter table people add column geom geometry;

16.2.4. Ajoutez une contrainte basée sur le type de géométrie.

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(geom) = 'ST_Point'::text
          OR 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.

16.2.5. ★★★ Essayez vous-même

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.

16.2.6. Remplissez la table geometry_columns.

A ce stade, vous pouvez également ajouter une entrée dans la table geometry_columns:

insert into geometry_columns values
  ('','public','people','geom',2,4326,'POINT');

Why? geometry_columns is used by certain applications to be aware of which tables in the database contain geometry data.

Note

Si la commande INSERT retourne une erreur, lancez d’abord cette requête:

select * from geometry_columns;

If the column f_table_name contains the value people, then this table has already been registered and you don’t need to do anything more.

La valeur 2 fait référence au nombre de dimensions; dans ce cas, deux: X et Y.

The value 4326 refers to the projection we are using; in this case, WGS 84, which is referred to by the number 4326 (refer to the earlier discussion about the EPSG).

★☆☆ Essayez vous-même

Add an appropriate geometry_columns entry for your new cities layer

16.2.7. Ajouter un enregistrement géométrique à la table en utilisant SQL

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, 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.

Now is probably a good time to open QGIS and try to view your people table. Also, we should try editing / adding / deleting records and then performing select queries in the database to see how the data has changed.

To load a PostgreSQL layer in QGIS, use the Layer ► Add PostgreSQL Layers menu option or toolbar button:

addPostgisLayer

Ce qui ouvrira la boîte de dialogue suivante:

../../../_images/add_postgis_layer_dialog.png

Cliquez sur le bouton New pour ouvrir la boîte de dialogue suivante:

../../../_images/new_postgis_connection.png

Définissez alors une nouvelle connexion, par exemple:

Name: myPG
Service:
Host: localhost
Port: 5432
Database: address
User:
Password:

To see whether QGIS has found the address database and that your username and password are correct, click Test Connect. If it works, check the boxes next to Save Username and Save Password. Then click OK to create this connection.

Back in the Add PostgreSQL Layers dialog, click Connect and add layers to your project as usual.

★★☆ Essayez vous-même

Formulate a query that shows a person’s name, street name and position (from the geom column) as plain text.

16.2.8. Conclusion

Vous avez vu comment ajouter des objets spatiaux à votre base de données et comment les visualiser dans un logiciel de SIG.

16.2.9. La suite ?

Dans la prochaine leçon, nous verrons comment importer et exporter des données de la base de données.