4.4. Accéder aux données SIG


Pour accéder aux données de la base vous pouvez soit utiliser le langage SQL soit l'importeur/exporteur de fichiers vecteurs (Shape File). Dans la section traitant du SQL, nous présenterons certains opérateurs disponibles pour comparer les objets géographiques et interroger les tables spatiales.

 Table des matières

4.4.1. Utilisation du SQL
4.4.2. Utilisation de l'exporteur

4.4.1. Utilisation du SQL

L'intérêt principal d'insérer des données dans une base de données est de pouvoir utiliser une requête SQL de type SELECT et de récupérer les champs retournés dans un fichier texte lisible :

db=# SELECT id, ST_AsText(geom) AS geom, name FROM ROADS_GEOM;
id | geom | name
---+-----------------------------------------+-----------
 1 | LINESTRING(191232 243118,191108 243242) | Jeff Rd
 2 | LINESTRING(189141 244158,189265 244817) | Geordie Rd
 3 | LINESTRING(192783 228138,192612 229814) | Paul St
 4 | LINESTRING(189412 252431,189631 259122) | Graeme Ave
 5 | LINESTRING(190131 224148,190871 228134) | Phil Tce
 6 | LINESTRING(198231 263418,198213 268322) | Dave Cres
 7 | LINESTRING(218421 284121,224123 241231) | Chris Way
(6 rows)

Parfois certain types de clauses sont nécessaires pour limiter le nombre de champs retournés. Dans le cas de clauses utilisant des attributs standards, utilisez simplement la même syntaxe SQL que celle utilisée pour des tables non spatiales. Dans le cas de clauses mettant en oeuvre des champs spatiaux, les opérateurs suivant sont à utiliser :

Maintenant, vous pouvez utiliser ces opérateurs dans vos requêtes. Remarquez que lorsque vous utilisez des géométries et des boites dans vos requêtes SQL en ligne de commande, vous devez explicitement spécifier que vous souhaitez créer une géométrie à partir d'une chaine de caractères en utilisant la fonction ST_GeomFromText().

Par exemple :

SELECT ID, NAME
  FROM ROADS_GEOM
  WHERE GEOM ~= ST_GeomFromText('LINESTRING(191232 243118,191108 243242)',-1);

La requête ci-dessus devrait renvoyer un enregistrement unique de la table "ROADS_GEOM" dans lequel l'objet géométrique serait égal à cette valeur.

Lorsque l'opérateur && est utilisé, vous pouvez spécifier soit une BOX3D soit un objet géométrique. Lorsque vous spécifiez une GEOMETRY, cependant, son cadre limite est utilisé pour réaliser la comparaison.

SELECT ID, NAME
  FROM ROADS_GEOM
  WHERE
    GEOM && ST_GeomFromText('POLYGON((191232 243117,191232 243119,191234 243117,191232 243117))',-1);

La requête ci-dessus utilisera le cadre limite du polygone pour effectuer la comparaison.

La requête spatiale la plus communément utilisée par une logiciel client, comme par exemple pour des navigateurs de données et des générateurs de cartes sur internet, sera probablement une requête basée sur des cadres limites, pour saisir la valeur du cadre limite d'une carte des données pour affichage. En utilisant un objet de type BOX3D pour le cadre, une telle requête ressemblerait à cela :

SELECT ST_AsText(GEOM) AS GEOM
  FROM ROADS_GEOM
  WHERE
    GEOM && SetSRID('BOX3D(191232 243117,191232 243119)'::box3d,-1);

Vous remarquerez l'utilisation d'un SRID, pour spécifier le système de projection de l'objet de type BOX3D. La valeur -1 est utilisée pour indiquer que le SRID n'est pas défini.

haut de la page | table des matières

4.4.2. Utilisation de l'exporteur

L'exporteur de table pgsql2shp se connecte directement à la base de données et convertit une table (potentiellement définie par une requête) en fichier vecteur (shapefile). La syntaxe de base est :

pgsql2shp [<options>] <database> [<schema>.]<table>
pgsql2shp [<options>] <database> <query>

Les options en ligne de commande sont les suivants :

-f <nom_de_fichier>Écrit le résultat dans le fichier spécifié.
-h <hôtet>Le nom du serveur de base de données auquel se connecter.
-p <port>Le port utilisé pour se connecter au serveur.
-P <mot_de_passe> Le mot de passe à utiliser lors de la connection au serveur.
-u <utilisateur>Le nom d'utilisateur à utiliser lors de la connection au serveur.
-g <colonne géometrique>Dans le cas de tables avec des colonnes géométriques multiples, la colonne géométrique à utiliser lors de la rédaction du fichier vecteur (shapefile).
-b Utilise un curseur binaire. Cela rend l'opération d'extraction plus rapide, mais ne fonctionnera pas si un attribut non-géométrique dans la table n'a pas de conversion en texte possible.
-r mode raw. Ne supprime pas le champ gid, ou échappe les noms de colonnes.
-d Pour une compatibilité en arrière : crée un fichier vecteur en 3 dimensions lorsque l'on exporte à partir de vieilles versions (pre-1.0.0) de bases de données PostGIS (par défaut il crée des fichiers vecteurs en 2 dimensions dans ce cas). À partir des versions 1.0.0 et supérieures de PostGIS, les dimensions sont complètement encodées.

haut de la page | table des matières