Importer un fichier

Raster2pgsql

Raster2pgsql est l'utilitaire fourni avec PostGIS pour importer un jeu de données Raster dans la base PostgreSQL.

À l'instar de shp2pgsql, raster2pgsql ne se connecte pas directement à la base, mais produit les requêtes SQL qui créent le(s) raster(s) selon les options paramétrées. Ces requêtes SQL peuvent être enregistrées dans un fichier .sql qui sera ensuite exécuté par un client tel que psql ou pgAdmin.

Il faut appeler le programme « raster2pgsql » qui a été installé avec PostGIS.

Sous Windows, Si la variable « Path » n'a pas été modifiée (comme indiqué précédemment), il faudra l'appeler par son chemin complet, qu'on obtiendra en faisant une recherche dans C:\Program Files\PostgreSQL\Numero_de_version\bin.

Depuis le terminal, on lance tout d'abord « raster2pgsql » sans argument pour vérifier que la commande est bien trouvée, et obtenir de l'aide sur son utilisation.

Exécution de « raster2pgsql » sans argument, pour obtenir de l'aide : faire défiler pour tout voir
1
 raster2pgsql

Pour importer le modèle numérique de terrain de la commune de la flèche nommé « mnt_25m_asc.asc » du répertoire de travail, il faut d'abord générer la requête SQL, raster2pgsql permet cette action :

1
raster2pgsql mnt_25m_asc.asc >mnt_25m.sql

Sous Windows, si la manipulation vous semble compliquée, créez un fichier "pg.bat" (avec le bloc-notes par exemple) et copiez le code ci-dessous dedans (modifiez les chemins d'accès s'ils sont différents), puis lancez le fichier .bat :

1
@echo off
2
cd C:/Rasterwork
3
"C:\Program Files\PostgreSQL\12\bin\raster2pgsql.exe" mnt_25m_asc.asc >mnt_25m.sql
4
pause
5

psql

Pour effectuer l'importation proprement dite dans la base PostGIS, il faut ensuite exécuter le SQL dans la base concernée.

On peut théoriquement utiliser pgadmin et ouvrir le fichier SQL dans la fenêtre SQL (« fichier » → « ouvrir), mais cette approche se révèlera limitée pour des fichiers SQL trop lourds  : pour un fichier raster donné, le fichier SQL pèse en général 2 à 3 fois plus lourd, soit 100 Mo ou 200 Mo pour un raster de 50 Mo telle que l'orthophotoplan « 0468_6739-20.tif ».

Pour cette raison, on utilisera le client « psql.exe » en ligne de commande.

Il faut donc appeler le client psql pour la base de données « formation » en indiquant le fichier « mnt_25m.sql », comme ceci :

1
psql.exe -h localhost -U postgres -W -d formation -f mnt_25m.sql

Un mot de passe est demandé : c'est toujours celui de l'utilisateur « postgres », c'est-à-dire « postgres » s'il n'a pas été changé.

Attention : Lorsque le mot de passe est demandé dans un terminal, rien ne s'affiche à l'écran lors de la frappe. Il suffit de taper le mot de passe puis "entrer". C'est un comportement normal.

Import complet : exécution de « raster2pgsql » puis de « psql »

La commande ne doit retourner aucune erreur. On peut alors vérifier avec pgAdmin que la table « mnt_25m » a bien été créée dans la base.

pgAdmin permet de constater que la table « mnt_25m » a bien été créée en base

AttentionErreur d'importation

L'erreur psql:mnt_25m.sql:1: NOTICE: l'identifiant (...) sera tronqué en (...) peut apparaître lors de l'import.

Ceci est inhérent au langage SQL. Il est alors plus simple de réaliser l'import depuis pgAdmin : lancer le requêteur, ouvrir le fichier mnt_25m.sql puis exécuter la commande classiquement.