Month: août 2009

Utiliser gdal2tiles

gdal2tiles est un programme python qui permet de tuiler une grosse image raster. Il génère un répertoire avec des tuiles TMS, un KML et des visualisateurs web simples. Pour l’utiliser, téléchargez FWTools (http://fwtools.maptools.org/)
A titre personnel, voilà la commande que j’utilise:
C:\Program Files\FWTools2.2.6>python .\bin\gdal2tiles.py -title "mon essai"
   -publishurl http://localhost/monsite/ -v "C:\mosa1.tif" "C:\monsite"

ou directement


C:\Program Files\FWTools2.2.6>.\bin\gdal2tiles.bat -title "mon essai"
   -publishurl http://localhost/monsite/ -v "C:\mosa1.tif" "C:\monsite"

Notez que le dernier répertoire n’est pas mis avec l’anti-slash.
Voici un bon lien de présentation: http://www.neogeo-online.net/blog/archives/114/
Explications de http://softlibre.gloobe.org/ sur ce script:

La commande génère un répertoire avec de petites tuiles et métadonnées, suivant la spécification du Service de Tuilage de carte de l’OSGeo. Des pages web simples avec des visualiseurs basés sur Google Map et OpenLayers sont générés également – tout le monde peut confortablement explorer vos cartes en ligne et vous n’avez pas besoin d’installer ou de configurer un logiciel spécial (comme Mapserver) et la carte s’affiche très rapidement dans le navigateur web. Vous avez seulement besoin de télécharger votre répertoire généré dans un serveur web.

NOTE : gdal2tiles.py est un script Python, et ne fonctionnera que si GDAL a été compilé avec la gestion de Python.

GDAL2Tiles créé également les métadonnées nécessaires pour Google Earth (SuperOverlay KML), dans le cas où la carte fournie utilise une projection EPSG:4326.

Les fichiers world et les références spatiales incluses sont utilisés durant la génération des tuiles, mais vous pouvez publier également une image sans le géoréférencement.

  • -title “Title” : titre utilisé pour les métadonnées générées, les visualisateurs web et les fichiers KML.
  • -publishurl http://yourserver/dir/ : adresse du répertoire dans lequel vous allez télécharger le résultat. Il doit se terminer par un slash.
  • -nogooglemaps : ne génère pas de page HTML de base pour Google Maps.
  • -noopenlayers : ne génère pas de page HTML de base pour OpenLayers.
  • -nokml : ne génère pas de fichier KML pour Google Earth.
  • -googlemapskey KEY : clé pour votre domaine généré sur la page web de l’API de Google Maps (http://www.google.com/apis/maps/signup.html).
  • -forcekml : force la régénération des fichiers KML. Le fichier en entrée doit utiliser des coordonnées EPSG:4326 !
  • -v : génère une sortie verbeuse lors de la génération des tuiles.

Edit du 21/05/2010

Après un formatage d emon PC, je m’apperçois que la nouvelle version de gdal2tiles inclue dans FWTools 2.4.7 ne fonctionne plus.

cf: http://lists.maptools.org/pipermail/fwtools/2009-September/001651.html et

et ce serait lié à un problème générationnel de python (16bits vs 32???)… et ben.

Bon, j’ai trouvé une solution en attendant: re-récupérer la version 2.2.6 de FWTools et l’utiliser…. C’est ce qu’on appelle être au bord du précipice et faire un grand pas en avant…

Dernier point que je n’avais pas précisé avant: pour utiliser GDal2Tiles, il faut « installer » l’environement de FWTool en lancant en ligne de commande le fichier setfw.bat situé à la racine du répertoire d’installation de FWTools2.2.6 (dans Program Files).

Et bien sûr, voici le lien qui va bien pour récupérer l’ancienne version de FWTools2.2.6: http://home.gdal.org/fwtools/FWTools226.exe

Mapserver, PostGis et les mots de passe…

Lorsqu’on utilise Mapserver avec PostGIS, il faut créer dans le mapfile l’objet LAYER sous cette forme:

LAYER
NAME "Word"
  PROJECTION
    "init=epsg:4326"
  END
  STATUS ON
  METADATA
    "wms_title" "Le monde"
    "wms_feature_info_mime_type" "text/html"
    "wms_include_items" "all"
    "wms_srs" "epsg:4326"
  END
  CONNECTIONTYPE POSTGIS
  CONNECTION "host=127.0.0.1 dbname=lupis password=toto user=postgres"
  DATA "the_geom FROM (SELECT id, name, the_geom FROM  spatial_reference_unity ) AS QUERY USING srid=4326 USING UNIQUE id"
  TYPE POLYGON
  OPACITY 100
  CLASS
    COLOR 255 255 255
    OUTLINECOLOR 0 0 0
  END
END

Il suffit, pour n’importe quel utilisateur, de récupérer l’url du fichier MAP (par exemple http://localhost/france.map) pour récupérer votre mot de passe de la base de données PostGIS (ici pour l’exemple « toto »). Il s’agit d’une faille de sécurité majeure pour votre système d’information.

La solution que j’utilise est l’outil msencrypt fourni par Mapserver (depuis sa version 4.10).

Voici les étapes à suivre pour crypter le mot de passe dans le lien ci-dessus:

  1. Générer une clé de chiffrement (à noter que cette clé ne doit pas être stockée n’importe où sur votre serveur Web, mais bien dans un répertoire à accès restreint):
    msencrypt -keygen « D:\site\
    restricted_folder\mykey.txt »
    Ce fichier de clé généré contient quelque chose comme:
    2137FEFDB5611448738D9FBB1DC5905
  2. Crypter le mot de passe de votre base de données PostGis en utilisant:
    msencrypt -key « D:\site\
    restricted_folder\mykey.txt » « toto »
    Ceci retourne le mot de passe crypté qui doit ressembler à cela:
    8A1B6A098F1BF956
  3. Modifier le mapfile pour s’assurer que le ficheier de clé ‘mykey.txt’ peuvent être trouvé:utiliser la variable d’environnement « MS_ENCRYPTION_KEY » . Le paramètre de configuration à l’intérieur de l’objet MAP peut être utilisé pour définir une variable d’environnement:
    MAP

    CONFIG « MS_ENCRYPTION_KEY » « D:/site/restricted_folder/myPostGisKey.txt »

    FIN # mapfile
  4. Modifier la chaîne connexion de la couche d’utiliser le mot de passe généré clés, en prenant soin d’utiliser les « { } » entre crochet autour de la clé:
    CONNECTION « host=127.0.0.1 dbname=lupis password={8A1B6A098F1BF956} user=postgres »

C’est tout !

Référence: http://mapserver.org/utilities/msencrypt.html