Insérer un jeu de données Mapinfo dans une base de données PostgreSQL-PostGIS

Informations préalables

Tout d’abord, il est indispensable d’avoir installé GDAL sur votre système. Vous devez également avoir un SGBD PostgreSQL et PostGIS d’installé. Ensuite la base de données que vous souhaitez utiliser doit être spatialisé.

Maintenant, vous devez disposer d’un jeu de données complet avec un système de projection renseigné.

Le jeu de données se compose de :

  • pays.DAT
  • pays.ID
  • pays.MAP
  • pays.TAB
  • pays.IND (optionnel)

Vous pouvez obtenir des informations sur le système de projection en tapant :

ogrinfo -so -al pays.TAB

Insertion des données dans une base de données

Maintenant vous devez vous placer dans le répertoire des données et utiliser la commande suivante.

PGCLIENTENCODING=iso-8859-15 ogr2ogr -f "PostgreSQL" PG:"host=localhost dbname=MaBase user=moi port=5432 password=MonMot2Passe" -lco GEOMETRY_NAME=the_geom -a_srs EPSG:27572 pays.TAB

Description :

PGCLIENTENCODING

Cet argument est indispensable si vous souhaitez insérer des données encodées au format ISO-8859-xx dans une base de données UTF-8

ogr2ogr

C’est la commande de conversion de fichier

-f "PostgreSQL"

L’option -f défini le format dans lequel va être enregistré le jeu de données. Dans notre cas, nous voulons enregistrer notre jeu de données dans une base de données d’un SGBDR « PostgreSQL » (celle-ci étant, bien sûr, spatialisée)

PG:"host=localhost dbname=MaBase user=moi port=5432 password=MonMot2Passe"

Ces informations sont à renseigner afin déterminer quel seveur, quel port (5432 est le port par défaut donc il n’est pas forcément nécessaire de le renseigner pour une première installation par défaut), et quelle base de données nous devront utiliser pour stocker le jeu de données. Nous devons également définir un utilisateur ayant des droits suffisants pour créer des tables dans cette base de données

-lco GEOMETRY_NAME

Cette option suivi de l’argument GEOMETRY_NAME permet de modifier le nom de la colonne géométrie ce qui est utile lors que l’on veut aussi utiliser la commande shp2pgsql. Il faut donc mettre la valeur « the_geom »

-a_srs

Cette option est indispensable dans mon cas car le système de projection n’est pas reconnu avec la commande ogrinfo. Dans mon exemple, la projection sous Mapinfo est définie en Lambert II carto Paris. J’ai donc mis le code EPSG correspondant : 27572 (en sachant qu’il remplace le code 27582 anciennement utilisé pour cette projection, celui-ci étant aujourd’hui obsolète)

-overwrite

Cette option s’avère utile pour mettre à jour le contenu de vos tables mais n’est pas indispensable.

Création d’un index spatial

Afin d’améliorer les performance de votre système de gestion de base de données, il est d’indexer vos tables sur la géométrie. Une bonne méthode est disponible sur le site PostGIS.fr. Ainsi nous allons créer un index sur la colonne the_geom

Tout d’abord, nous devons nous connecter à la base de données :

 psql -u moi -d MaBase

Maintenant, nous allons créer notre index et le nommer the_geom_gist (c’est pas un nom obligatoire. c’est juste pour mémoriser sur quel colonne et quel méthode j’ai utiliser pour créer l’index) :

CREATE INDEX "the_geom_gist" ON "pays" USING GIST ("the_geom" GIST_GEOMETRY_OPS );
-- L'analyse de la table est indispensable pour l'optimisation des requêtes. 
-- Il est donc nécessaire de l'effectuer après chaque ajout de tables ou modification de celles-ci.
VACUUM ANALYZE "pays";

Gestion des droits

Pour permettre à un utilisateur de lire vos données cartographiques tout en évitant les problèmes de sécurité, nous devons limiter les droits d’accès avec une unique possibilité de lecture.

Pour cela, il faut faire la manipulation sur chaque table de la base de données :

GRANT SELECT ON "pays" TO "www-data";
VACUUM "pays";

À propos de gglafouine

Je suis actuellement en poste dans le Groupe Nicollin en tant que Cartographe. J'ai pris l'initiative de mettre en place ce blog en 2008 afin de partager mes connaissances, mes problématiques et mes interrogations. Ainsi, cette plateforme me sert d'appui dans mon travail et d'interface d'échange avec mes collègues.
Ce contenu a été publié dans Divertissement, Erreurs, Géomatique, HowTo, Informatique, Outils, SGBD, avec comme mot(s)-clef(s) , , , , . Vous pouvez le mettre en favoris avec ce permalien.

Laisser un commentaire