4.3. Chargement de données SIG


Une fois que vous avez créer une table spatiale, vous êtes prêt pour ajouter des données SIG à la base de données. Actuellement, il y a deux façons d'insérer les données dans une base PostgreSQL/PostGIS : en utilisant des requête SQL ou en utilisant l'importeur/exporteur de fichiers vecteurs (Shape).

 Table des matières

4.3.1. Utilisation de code SQL
4.3.2. Utiliser l'importeur

4.3.1. Utilisation de code SQL

Si vous pouvez convertir vos données en une représentation textuelle, alors utiliser du code SQL pourrait être la manière la plus simple d'insérer vos données dans PostGIS. Comme avec Oracle et d'autre bases de données SQL, les données peuvent être chargées par le moniteur interactif en utilisant un fichier texte contenant des requêtes de type "INSERT" :

Un fichier d'importation de données (par exemple roads.sql) pourrait ressembler à ceci :

BEGIN;
INSERT INTO ROADS_GEOM (ID,GEOM,NAME ) VALUES (1,GeomFromText('LINESTRING(191232 243118,191108 243242)',-1),'Jeff Rd');
INSERT INTO ROADS_GEOM (ID,GEOM,NAME ) VALUES (2,GeomFromText('LINESTRING(189141 244158,189265 244817)',-1),'Geordie Rd');
INSERT INTO ROADS_GEOM (ID,GEOM,NAME ) VALUES (3,GeomFromText('LINESTRING(192783 228138,192612 229814)',-1),'Paul St');
INSERT INTO ROADS_GEOM (ID,GEOM,NAME ) VALUES (4,GeomFromText('LINESTRING(189412 252431,189631 259122)',-1),'Graeme Ave');
INSERT INTO ROADS_GEOM (ID,GEOM,NAME ) VALUES (5,GeomFromText('LINESTRING(190131 224148,190871 228134)',-1),'Phil Tce');
INSERT INTO ROADS_GEOM (ID,GEOM,NAME ) VALUES (6,GeomFromText('LINESTRING(198231 263418,198213 268322)',-1),'Dave Cres');
COMMIT;

Le fichier de données peut être chargé dans PostgreSQL vraiment facilement en utiliant le moniteur interactif psql de la façon suivante :

psql -d [database] -f roads.sql

haut de la page | table des matières

4.3.2. Utiliser l'importeur

L'importeur de données shp2pgsql convertit des fichiers vecteurs (Shape) ESRI en requêtes SQL directement utilisables pour insérer des données dans des bases PostgreSQL/PostGIS. L'importeur possède différents modes opératoires qui se distinguent suivant les options qui lui sont passées en paramètre :

-d Supprime la table de la base données avant la création de la nouvelle table avec les données du fichier vecteur (Shape).
-a Ajoute les données du fichier vecteur dans la table de la base de données. Notez qu'il faut utiliser cette option pour charger plusieurs fichiers, qui doivent contenir les mêmes attributs et les mêmes types de données.
-c Crée une nouvelle table et la remplit avec le contenu du fichier vecteur (Shape). C'est le mode par défaut.
-p Produit uniquement le code de création des tables, sans ajouter les données. Cela peut être utile lorsque vous avez besoin de séparer complètement les étapes de création de table et celle de son remplissage.
-D Utilise le format d'export spécial de PostgreSQL pour extraire les données. Cette option peut être combinée avec -a, -c et -d. Ceci est plus rapide pour charger des données que d'utiliser des requêtes au format SQL de type "INSERT". Utilisez ceci pour l'insertion d'une grande quantité de données.
-s <SRID> Crée et remplit les tables géométriques avec le SRID spécifié.
-k Respecte la syntaxe (casse : majuscules/minuscules) des identifiants (colonne, schéma et attributs). Notez que les attributs dans des fichiers vecteurs sont en majuscules.
-i Coercition de tous les entiers en entiers 32 bits standards, ne crée pas de bigints 64 bits, même si la signature de l'en-tête DBF apparait pour le garantir.
-I Crée un index GiST sur la colonne géométrique.
-w Retour au format WKT, utilisé avec les anciennes versions (0.X) de PostGIS. Notez que cela introduira des dérives de coordonnées et supprimera les valeurs M des fichiers vecteurs.
-W <encoding> Spécifie l'encodage des données en entrée (du fichier dbf). Lorsque cette option est utilisée, tous les attributs du dbf sont convertis de l'encodage spécifié en UTF-8. La sortie SQL résultante contiendra une commande SET CLIENT_ENCODING to UTF8, donc le serveur principal sera capable de reconvertir de l'UTF-8 dans l'encodage choisi dans la configuration de la base de données.


Notez que les options -a, -c, -d et -p sont mutuellement exclusives.

Une session exemple utilisant l'importeur pour générer un fichier d'importation et le chargement de ce fichier est décrite ci-dessous :

# shp2pgsql shaperoads myschema.roadstable > roads.sql
# psql -d roadsdb -f roads.sql

Une conversion et une importation des données peuvent être faites en une seule étape en utilisant les tubes UNIX :

# shp2pgsql shaperoads myschema.roadstable | psql -d roadsdb

haut de la page | table des matières