Le blog de Jean David TECHER, un Réunionnais à Saint-Priest/Lyon

Aller au contenu | Aller au menu | Aller à la recherche


< 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 >

dimanche 1 mars 2009

Premier week-end de mars: PgRouting/Vidéos de Denise Milanie/Converson vidéo sous GNU/Linux pour le baladeur BMP8807...en moins de 48H00

Ce week-end j'avais prévu de sortir faire un tour mais finalement, j'ai laissé tomber....Ou konné le gar commen i lé! Y di un z'affair aprè seulement i fé pas.... J'ai finalement passé mon week-end à faire

Vendredi soir: PgRouting Tests d'OpenStreetMap sur les données de la ville d'Antibes/Sophia Antipolis

A la sortie du travail vendredi soir après une semaine assez costaud , j'ai déposé un collègue puis direction Juan-Les-Pins au Crystal, histoire de prendre un verre. J'ai donc pris un whisky-coca, ai mangé une omellettre garnie sur place, salué le barman Mika, puis je suis rentré...Comme tous les soirs ces temps-ci, je n'ai pas tenu longtemps, assez épuisé. J'ai regardé la télé puis direction le portable pour tenter de faire correspondre mes test de PgRouting actuels avec les travaux de du tutorial de CampToCamp/PgRouting du FOSS4G2007 sur les données du réseau routier d'Antibes pris depuis le site d'OpenStreetMap. Rien de compliqué en soit

Remarque au passage concernant l'option enable-debug: Une des options qui me paraît actuellement intéressante dans PostGIS est l'option enable-debug pour les développeurs notamment en jouant avec la fonction de support LWDEBUGF(.....) mais je déconseille de la jouer sur des tests mettant en jeu de gros jeux de données car plus elle est utilisée et plus les logs seront bavard. A utiliser avec soin et modération car elle est très utilsée. Mais bon sur une simple requête cela montre tout le mécanisme mis en place pour effectuer une simple requête spatiale...

  1. Récupération des données! Il faut d'abord se rendre sur le site d'OpenStreetMap pour récupérer les données (à exporter en cliquant sur export). On récupère ainsi un fichier au format .osm. Pour moi, il s'agit ici du fichier antibes.osm pesant 6,5Mo.

  2. Ayant effectué mes tests pour PostgreSQl 8.3.6 et PostGIS 1.4.0 SVN, il faut maintenant créer la base. Je commence donc par lancer mon serveur en configurant mes variables

    export PATH=/opt/pgsql/bin/:$PATH
    export PGPORT=5433 PGDATA=/opt/pgdata/
    export LD_LIBRARY_PATH=/opt/pgsql/lib/:$LD_LIBRARY_PATH
    

    Ensuite on crée sa base comme d'habitude

    createdb antibes
    createlang plpgsql antibes;
    psql -d antibes -f /opt/pgsql/share/contrib/postgis.sql 
    psql -d antibes -f /opt/pgsql/share/contrib/spatial_ref_sys.sql 
    psql -d antibes -f /opt/pgsql/share/contrib/routing_core.sql 
    psql -d antibes -f /opt/pgsql/share/contrib/routing_core_wrappers.sql
    psql -d antibes -f /opt/pgsql/share/contrib/routing_topology.sql 
  3. Pour importer les données du fichier antibes.osm, il faut utiliser le binaire osm2pgrouting comme proposé et documenté à http://pgrouting.postlbs.org/wiki/tools/osm2pgrouting. Comme toujours pour la compilation configure && make.Une fois compilé, on fait

    osm2pgrouting -file /home/user/postgres/antibes.osm -port 5433 -user postgres  -dbname antibes -conf mapconfig.xml -clean

Ensuite il s'agit de télécharger le fichier http://pgrouting.postlbs.org/attachment/wiki/WorkshopFOSS4G2007/foss4g_w12.tar.gz. Ensuite

  • On le décompresse sur le serveur Web.
  • On s'assure d'avoir une clé pour Google Maps (facile à obtenir donc pas détaillé ici ....) puis la remplacer comme il se doit dans le fichier foss4g_w12/index.html à la ligne
    <script src="http://maps.google.com/maps?file=api&v=2&key=....>
  • Il faut maintenant effectuer quelques requêtes SQL pour la suite:
    • extent de la carte et mise à jour du srid. Les données issues de OpenStreetMap étant dans le système de projection habituelle WGS 84 donc srid=4326, on effectue
      select updategeometrysrid('ways','the_geom',4326);
      Ici la tables ways est une table crée par osm2pgrouting contenant le réseau routier.
    • Ajout dans spatial_ref_sys pour sird=54004Foss4g_w12 travaille pour srid=54004. Comme j'ai la flemme de faire une projection de mes données (coût relativement peu important car j'ai peu de données pour des reprojection à la volée par rapport à ma quantité de données estimées à moins de 6000 tuples pour le réseau routier), il faut ajouter l'entrée correspondant à srid=54004 dans la table spatial_ref_sys.
      INSERT INTO spatial_ref_sys VALUES (
      54004,
       'spatialreference.org', 
      54004, 'PROJCS["World_Mercator",GEOGCS["GCS_WGS_1984",DATUM["WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Mercator_1SP"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",0],PARAMETER["Standard_Parallel_1",0],UNIT["Meter",1],AUTHORITY["EPSG","54004"]]', '+proj=merc +lon_0=0 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs ');
    • Modifications des fichiersDeux fichiers doivent maintenant être modifiés: foss4g_w12/index.html et foss4g_w12/ax_routing.php
      • Pour foss4g_w12/index.html, il faut exécuter la requête
        select astext(extent(transform(the_geom,54004))) from ways;
        ce qui donnera un truc du style
        POLYGON((XXXXXXXXXXXXXXXXXXXXXX))
        Dans le fichier foss4g_w12/index.html, ilf faut repérer les lignes - il y en a deux -
        new OpenLayers.Bounds (YYYYYYYYYYYYYYYYYY)
        et remplacer YYYYYYYYYYYYYYYYYY par XXXXXXXXXXXXXXXXXXXXXX Puis excécutez la requpête
         select astext(transform(setsrid(extent(the_geom),4326),54004)) from ways ;
        qui donnera par exemple chez moi
        POLYGON((773661.893696331 5366204.60480585,773661.893696331 5384242.9623652,796235.71215592 5384242.9623652,796235.71215592 5366204.60480585,773661.893696331 5366204.60480585))
        toujours dans le même fichier, il suffit à la ligne
        var wkt = "POLYGON((...))"
        par le résultat de la précédente requête. Ceci donnera donc le carré rouge de la fig 1 (voir plus bas).

        Fig 1 - Visualisation Antibes / Sophia Antipolis
      • Pour foss4g_w12/ax_routing.php, commencez par remplacer les paramètres de connexion du serveur par vos propres motifs de connexion. J'ai juste effectuer mes modifs pour la fonctionnalité shortes_path_shootingstar()
      • ...
         // Connect to database
            $con = pg_connect("dbname=".PG_DB." host=".PG_HOST." user=".PG_USER." port=".PG_PORT);
            
            $sql = "SELECT gid, source, target, the_geom, 
                                 distance(the_geom, Transform(GeometryFromText('POINT(".$lonlat[0]." ".$lonlat[1].")', 54004),4326)) AS dist 
                    FROM ".TABLE."  
                    WHERE the_geom && Transform(setsrid(
                          'BOX3D(".($lonlat[0]-20)." 
                                 ".($lonlat[1]-20).", 
                                 ".($lonlat[0]+20)." 
                                 ".($lonlat[1]+20).")'::box3d, 54004),4326) 
                    ORDER BY dist LIMIT 1";
        
        .....
        puis
        ....
        case 'SPS':
              $sql = "SELECT rt.edge_id as gid, AsText(Transform(".TABLE.".the_geom,54004)) AS wkt,
                             length(".TABLE.".the_geom) AS length, ".TABLE.".gid
                          FROM ".TABLE.",
                              (SELECT edge_id
                                  FROM shortest_path_shooting_star(
                                      'SELECT gid as id,source,target,length as cost,reverse_cost,x1,y1,x2,y2,rule,to_cost from ".TABLE."' ,
                                      ".$startEdge['gid'].",
                                      ".$endEdge['gid'].", true, true)
                               ) as rt
                          WHERE ".TABLE.".gid=rt.edge_id;";
        break;
        

Pour se faire, il fallait juste ajouter le correspondance pour srid=54004 dans la table spatial_ref_sys et modifier certains fichiers en ayant recours à la fonctionnalité Transform(). Pendant que je faisais mes tests, mon petit serveur à Montpellier en profitait pour me rapatrier de bonnes données de Denise Milani.

Pour la suite comme tout est en SVG, il faut disposer du navigateur Opera par exemple qui s'apprête parfaitement pour la situation




Fig 2 - Test des données pour aller de chez moi à Carrefour. J'me disais bien qu'il y avait un autre chemin.

Fig 3 - Test des données pour aller du taf à Garbejaire...Très important, le jeud soir notamment pour se détendre !

Samedi midi: Vidéos de Denise Milani

Mes données sur Denise Milani ayant été rapatriées à mon réveil samedi matin, j'en ai profité pour faire quelques conversions en utilisant ma petite compil' perso de ffmpeg avant de partie en direction de Carrefour!

Quelques vidéos de Denise Milani...

Ce qui a de bien avec elle, c'est qu'elle ne fait pas dans le vulgaire. Très beau mannequin de charme connue sur le Web! Le lecteur Flash possède 6 vidéos de la splendide demoiselle.

  1. Pour le fichier torrent http://torrents.thepiratebay.org/3961052/Denise.Milani_6.HD.Videos_HOT.Bikini.Model.3961052.TPB.torrent

    Si on veut un client torrent disponible depuis le shell, il y a bien sûr ce bon vieux rtorrent. Pour l'utiliation, il y a la doc disponible sur le site de ubuntu-fr pour rtorrent. Pour les habitués de la compilation sous Ubuntu, on peut aussi essayer cet article que j'ai publié pour la compilation de rtorrent

  2. Pour la conversion en flv en utilisant ffmpeg/flvtool.

    On peut télécharger ma version statique de ffmpeg qui contient les dépendances nécessaires (donc rien à installer quasiment)

    Le torrent propose des films au format .wmv et .mov. On se contentera donc de faire une boucle sur *v pour la conversion comme suit.

    for input in *v;
    do 
    output=${input%.*};
    ffmpeg -i ${input} -y -b 450k  -s 320x240 -acodec libmp3lame -ar 11025 -ab 92k -f flv - | \
    flvtool2 -U stdin ${output}.flv;done
  3. Pour le lecteur Fash:

    Il faut se rendre à http://flv-player.net/players/multi/generator/ pour générer sa playlist et faire un simple copier-coller comme proposer sur le site...

Samedi après-midi et soir: achat du baladeur

J'étais spécialement passé à Carrefour pour me prendre un petit baladeur mp3/mp4.

Sur le Web, je mettais renseigné pour voir la compatibilité et le nécessaire pour faire fonctionner un ipod avec Ubuntu. Juste par curiosité et en dépit des prix affichés sur le Web, je suis donc allé à Carrefour pour voir le prix...Comme on dit quand, j'ai vu les prix, j'ai fait demi-tour...

Oté créole!!!.........le z'affair l" pas doné!!! Un z'affair pareil juste pour 2 Go à un prix pareil...Houla! Finalement je me suis laissé tenter par le petit baladeur - qui était juste à côté de marque Carrefour -. Je n'ai pas regretté mon investissement de 50€, comparé à 200~400 €. Oté...Faut aimé comme i dit...


Fig 4 - Baladeur BMP 8807

Pour la route au retour, je me suis pris deux pains bagnats. Rentré à la case, j'ai donc mangé puis me suis mis sur ma nouvelle acquisition...Déjà la conversion vidéo n'a pas été des plus aisée au début. Finalement, j'ai réussi à trouver la ligne de commande depuis mencoder pour réussir à faire la conversion...La ligne suivante donne de bons résultats

mencoder ${InputFile} -ofps 18 -vf-add scale=220:176, -vf-add expand=220:176:-1:-1:1,rotate=2,flip -srate 44100 -ovc xvid -xvidencopts\

bitrate=1000:max_bframes=0:quant_type=h263:me_quality=0 -oac lavc -lavcopts acodec=mp2:abitrate=64 -o ${OutputFile}

Comme tous les samedis soirs ces temps-ci, j'ai finalement retrouvé cette ligne en me rappelant que comme le baladeur est livré avec AVI Converter, ce dernier n'est qu'un simple Front-End pour Mencoder. Il a donc suffit d'ouvrir le fichier converter.ini qui l'accompagnait pour trouver la bonne ligne...J'ai opté pour unbitrate =1000 pour une meilleur qualité d'image en dépit du poids alourdi des vidéos.

Dimanche: carry lapin et rédaction du billet

Dimanche vers 14h00, je me suis cuisiné un petit carry lapin, accompagné de lentilles et de blé...J'en ai aussi profité pour faire mes conversions et déposer mes mp3 sur mon nouveau joujou.

J'ai aussi profité de ma soirée pour rédiger cet énorme billet et recompiler ffmpeg pour trouver un moyen pour conversion de .mov vers .flv directement sans passer par mencoder.

samedi 28 février 2009

[FFMPEG/Flvtool2]Vidéos de Denise Milani

Quelques vidéos de Denise Milani...

Ce qui a de bien avec elle, c'est qu'elle ne fait pas dans le vulgaire. Très beau mannequin de charme connue sur le Web! Le lecteur Flash possède 6 vidéos de la splendide demoiselle.

  1. Pour le fichier torrent http://torrents.thepiratebay.org/3961052/Denise.Milani_6.HD.Videos_HOT.Bikini.Model.3961052.TPB.torrent

    Si on veut un client torrent disponible depuis le shell, il y a bien sûr ce bon vieux rtorrent. Pour l'utiliation, il y a la doc disponible sur le site de ubuntu-fr pour rtorrent. Pour les habitués de la compilation sous Ubuntu, on peut aussi essayer cet article que j'ai publié pour la compilation de rtorrent

  2. Pour la conversion en flv en utilisant ffmpeg/flvtool.

    On peut télécharger ma version statique de ffmpeg qui contient les dépendances nécessaires (donc rien à installer quasiment)

    Le torrent propose des films au format .wmv et .mov. On se contentera donc de faire une boucle sur *v pour la conversion comme suit.

    for input in *v;
    do 
    output=${input%.*};
    ffmpeg -i ${input} -y -b 450k  -s 320x240 -acodec libmp3lame -ar 11025 -ab 92k -f flv - | \
    flvtool2 -U stdin ${output}.flv;done
  3. Pour le lecteur Fash:

    Il faut se rendre à http://flv-player.net/players/multi/generator/ pour générer sa playlist et faire un simple copier-coller comme proposer sur le site...

dimanche 22 février 2009

[PostGIS] GUI en GTK pour shp2pgsql dans le SVN de PostGIS

Paul RAMSEY sur son blog en janvier publiait un billet concernant un GUI pour shp2pgsql en GTK. Or en février celui-ci avoir été committé dans le SVN de PostGIS


Shp2pgsql GUI pour GTK maintenant intégré dans le SVN de PostGIS.

En effet les options de compilation ont laissé apparaître une nouvelle option --enable-gui .

En pré-requis, il faut avoir installer au moins GTK 2.8.0. qui nécessite pango.

Voici comment faire pour tout compiler

Pour éviter tout conflit de dépendances avec mes propres lib' et binaires, j'ai décidé de tout compiler séparemment dans un répertoire /opt/gistools à part.

Les outils habituels: PostgreSQL, Geos et Proj

Comme toujours, on commence par construire un répertoire où poser nos sources

mkdir pgregress
cd pgregress/
  1. PostgreSQL 8.3.6:
    wget http://wwwmaster.postgresql.org/redir/357/h/source/v8.3.6/postgresql-8.3.6.tar.bz2 -O -|tar xjf -
    cd postgresql-8.3.6/
    ./configure --with-pam --with-ldap --with-readline --with-pgport=5433 --prefix=/opt/gistools
    make
    make install
    Pour être en conformité avec le reste de l'installation, on effectue déjà les mises à jours de variables adéquates
    export LD_LIBRARY_PATH=/opt/gistools/lib/:$LD_LIBRARY_PATH
    export PATH=/opt/gistools/bin/:$PATH
  2. Geos 3.0.3
    cd ..
    wget http://download.osgeo.org/geos/geos-3.0.3.tar.bz2 -O - | tar xjf -;
    cd geos-3.0.3 && ./configure --prefix=/opt/gistools/ && make && make install
  3. Proj 4.6.1
    cd ..
    wget http://download.osgeo.org/proj/proj-4.6.1.tar.gz -O - | tar xzf -;
    cd proj-4.6.1 && ./configure --prefix=/opt/gistools/ && make && make install

Il faut maintenant installer pango et GTK

Pango et GTK+ 2.8

On procède ainsi

  1. Pango
     wget ftp://ftp.gtk.org/pub/gtk/v2.8/pango-1.10.4.tar.bz2 -O - | tar xjf -
     cd pango-1.10.4/ && ./configure --prefix=/opt/gistools/&& make && make install
    
  2. GTK2.8. J'ai choisi la toute dernière version. Normalement pkg-config devrait faire son travail proprement si on omet de préciser le répertorie --prefix mais on va ruser un peu. Le configure de GTK débouchera sur un échec afin de trouver la bonne version de pango si on en a une de déjà installée mais vieille. J'ai été confronté à ce problème, j'ai donc préciser mon CFLAGS et mon LDFLAGS comme il faut.
     wget ftp://ftp.gtk.org/pub/gtk/v2.8/gtk+-2.8.9.tar.bz2 -O - | tar xjf -
    cd gtk+-2.8.9/
    CFLAGS=-I/opt/gistools/include/pango-1.0/ LDFLAGS="-L/opt/gistools/lib/ -lpango-1.0" ./configure --prefix=/opt/gistools/
    make
    make install

Il ne reste plus qu'à compiler PostGIS

PostGIS

On récupère le repository trunk de PostGIS

svn checkout http://svn.refractions.net/postgis/trunk postgis-svn

Comme pour GTK, il faut lui préciser la même ligne pour configure en ajoutant l'option --with-gui

cd postgis-svn
CFLAGS=-I/opt/gistools/include/pango-1.0/ LDFLAGS="-L/opt/gistools/lib/ -lpango-1.0" ./configure --prefix=/opt/gistools/ --with-gui
make
make install

Le binaire GUI est postgis-svn/loader/shp2pgsql-gui. Il suffit alors de le copier dans /opt/gistools/bin.

Pour le lancer, on effectuera

LD_LIBRARY_PATH=/opt/gistools/lib/:$LD_LIBRARY_PATH /chemin/vers/shp2pgsql-gui

lundi 16 février 2009

Jana Defi - Nouvelles photos sur le blog français

Décidemment l'ami Jdub - que je salue au passage - me fait plaize sur son blog consacré à Jana Defi avec les nouvelles photos de notre Jana du Web. Samedi entre deux lignes de compilation de VLC, j'en ai profité donc pour changer mon fond d'écran.

Un beau fon d'écran en attendant le printemps!!!