Samedi 22 août 2009 6 22 /08 /Août /2009 18:35
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 gdal2tiles.py -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.

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.

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



Par Vincent Bonnal - Publié dans : Géomatique
Ecrire un commentaire - Voir les 0 commentaires
Mardi 18 août 2009 2 18 /08 /Août /2009 12:38
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
Par Vincent Bonnal - Publié dans : Géomatique
Ecrire un commentaire - Voir les 0 commentaires
Mardi 16 juin 2009 2 16 /06 /Juin /2009 14:23
Si comme moi vous vous êtes demandé pourquoi votre code php plantait à la première ligne alors que tout semble correct, regardez bien la façon dont votre tag php est écrit:
<?
phpinfo();
?>

... fonctionne, mais pas tout le temps. En fait, cela dépend d'une directive interne de php paramétrée dasn votre php.ini
Cette directive est short_open_tag qui définit si les balises courtes d'ouverture de PHP (<? ?> ) sont autorisées ou non.
Par défaut, cette directive est à true. Préférez la à false afin de pouvoir utiliser le XML (<?xml ?> ) plus tard dans vos projets (XML est fondamentalement utile à tout projet PHP). Et puis, un peu de rigeur dans les projets, ça ne fait de mal à personne... Donc, préférez <?php à <? seul
Notez que cette directive affecte également l'utilisation de <?= , qui est identique à <? echo (à titre personnel, je préfère ne pas l'utiliser).

Plus d'info ici: http://fr.php.net/manual/fr/ini.core.php




Par Vincent Bonnal - Publié dans : Développement web
Ecrire un commentaire - Voir les 0 commentaires
Jeudi 11 juin 2009 4 11 /06 /Juin /2009 20:45
Après ces difficiles élections européennes, la seule pensée qui vient au sujet du Mouvement Démocrate est un poème de Rudyard KIPLING:

Si tu peux voir détruit l’ouvrage de ta vie
Et sans dire un seul mot te mettre à rebâtir,
Ou perdre en un seul coup le gain de cent parties
Sans un geste et sans un soupir,
Si tu peux être amant sans être fou d’amour ;
Si tu peux être fort sans cesser d’être tendre
Et , te sentant haï, sans haïr à ton tour,
Pourtant lutter et te défendre ;

Si tu peux supporter d’entendre tes paroles
Travesties par des gueux pour exciter des sots,
Et d’entendre mentir sur toi leurs bouches folles,
Sans mentir toi-même d’un mot ;
Si tu peux rester digne en étant populaire,
Si tu peux rester peuple en conseillant les Rois
Et si tu peux aimer tous tes amis en frères,
Sans qu’aucun d’eux soit tout pour toi ;

Si tu sais méditer, observer et connaître,
Sans jamais devenir sceptique ou destructeur
Rêver, sans laisser ton rêve être ton maître,
Penser, sans n’être qu’un penseur ;
Si tu peux être dur sans jamais être en rage,
Si tu peux être brave et jamais imprudent,
Si tu peux être bon, si tu sais être sage,
Sans être moral ni pédant ;

Si tu peux rencontrer triomphe après défaite
Et recevoir ces deux menteurs d’un même front,
Si tu peux conserver ton courage et ta tête
Quand tous les autres les perdront ;
Alors les Rois, les Dieux, la Chance et la Victoire
Seront à tout jamais tes esclaves soumis
Et, ce qui vaut bien mieux que les Rois et la Gloire,

Tu seras un Homme, mon fils.
Par Vincent Bonnal - Publié dans : Politique
Ecrire un commentaire - Voir les 0 commentaires
Mercredi 10 juin 2009 3 10 /06 /Juin /2009 14:24
Il existe 3 types de caractère pour PostgreSQL.
  • character varying(n), varchar(n)     Longueur variable avec limite
  • character(n), char(n)     longueur fixe, complété par des espaces
  • text     longueur variable illimitée
Une différence fondamentale entre varchar et char est que le second type complète avec des espaces la chaine de caractères... c'est désagrable de devoir systématiquement trimmer lorsqu'on utilise les char...

if ($_REQUEST['mon_champ']!='NC') s'écrit donc if (trim($_REQUEST['champ'])!='NC')

Plus d'info sur http://docs.postgresqlfr.org/8.3/datatype-character.html
Par Vincent Bonnal - Publié dans : Développement web
Ecrire un commentaire - Voir les 0 commentaires
 
Créer un blog gratuit sur over-blog.com - Contact - C.G.U. - Rémunération en droits d'auteur - Signaler un abus