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 289 290 >

jeudi 17 juillet 2008

[PgRouting 1.02] Build from source, export result in kml, see it using google maps api

1. Requirements

  • PostgreSQL >= 8.1
  • PostGIS+Geos+Proj
  • cmake for pgrouting. On Fedora, you can use you favorite tool to install it yum install cmake.x86_64
Be sure to have PostgreSQL bin in your PATH
export PATH=/usr/local/pgsql/bin:$PATH
N.B: the following instructions have been tested on Ubuntu Studio Feisty 32 bits, Fedora AMD 64 bits

2. Installation

First a directory where to compil our sources.
mkdir /tmp/src
cd /tmp/src/
2.a) GAUL
wget http://prdownloads.sourceforge.net/gaul/gaul-devel-0.1849-0.tar.gz?download
tar xvzf gaul-devel-0.1849-0.tar.gz 
cd gaul-devel-0.1849-0
./configure --enable-slang=no
make
make install
2.b) BOOST
cd ..
wget http://kent.dl.sourceforge.net/sourceforge/boost/boost_1_33_1.tar.bz2
tar xvjf boost_1_33_1.tar.bz2 
cd boost_1_33_1
./configure
make
make install
2.c) CGAL
cd ..
wget ftp://ftp.mpi-sb.mpg.de/pub/outgoing/CGAL/CGAL-3.3.tar.gz
tar xvzf CGAL-3.3.tar.gz 
cd CGAL-3.3
./install_cgal --prefix=/usr/local/cgal --with-boost=n --without-autofind -ni /usr/bin/g++
export CGAL_MAKEFILE="/usr/local/cgal/share/cgal/cgal.mk"
It's time compiling pgrouting.
2.d) PGROUTING
cd ..
wget http://files.postlbs.org/pgrouting/source/pgRouting-1.02.tgz
tar xvzf pgRouting-1.02.tgz 
cd pgrouting/
cmake -DWITH_TSP=ON -DWITH_DD=ON \
-DPOSTGRESQL_LIBRARIES=/usr/local/pgsql/lib/libpq.so -DPOSTGRESQL_INCLUDE_DIR=/usr/local/pgsql/include/server \
-DBoost_INCLUDE_DIR=/usr/local/include/boost-1_33_1/boost/ \
-DCGAL_INCLUDE_DIR=/usr/local/cgal/include -DCGAL_LIBRARIES=/usr/local/cgal/lib/libCGAL.so  \
-DGAUL_INCLUDE_DIR=/usr/local/include -DGAUL_LIBRARIES=/usr/local/lib/libgaul.so  -DGAUL_UTIL_LIBRARIES=/usr/local/lib/libgaul_util.so
make
make install
3. Extra
echo /usr/local/cgal/lib/ >> /etc/ld.so.conf
/sbin/ldconfig 

Notice: Extra is required else when you load routing_core.sql and routin_dd.dsql , you have errors. Libraries librouting.so and librouting_dd.so depend on libCGAL.so.2.

Indeed
[postgres@jdtecher ~]$ ldd /usr/local/pgsql/lib/librouting.so 
        linux-vdso.so.1 =>  (0x00007fff5edfd000)
        libgaul.so.0 => /usr/local/lib/libgaul.so.0 (0x00002aaaaad06000)
        libgaul_util.so.0 => /usr/local/lib/libgaul_util.so.0 (0x00002aaaaaf35000)
        libCGAL.so.2 => /usr/local/cgal/lib/libCGAL.so.2 (0x00002aaaab147000)
        libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00002aaaab376000)
        libm.so.6 => /lib64/libm.so.6 (0x00002aaaab676000)
        libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00002aaaab8fa000)
        libc.so.6 => /lib64/libc.so.6 (0x00002aaaabb08000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00002aaaabe5f000)
        /lib64/ld-linux-x86-64.so.2 (0x000000300f200000)
[postgres@jdtecher ~]$ ldd /usr/local/pgsql/lib/librouting_dd.so 
        linux-vdso.so.1 =>  (0x00007fff6adfd000)
        libgaul.so.0 => /usr/local/lib/libgaul.so.0 (0x00002aaaaad12000)
        libgaul_util.so.0 => /usr/local/lib/libgaul_util.so.0 (0x00002aaaaaf41000)
        libCGAL.so.2 => /usr/local/cgal/lib/libCGAL.so.2 (0x00002aaaab153000)
        libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00002aaaab382000)
        libm.so.6 => /lib64/libm.so.6 (0x00002aaaab682000)
        libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00002aaaab906000)
        libc.so.6 => /lib64/libc.so.6 (0x00002aaaabb14000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00002aaaabe6b000)
        /lib64/ld-linux-x86-64.so.2 (0x000000300f200000)
Now log as postgres, create a database with PostGIS+PgRouting
export PGUSER=postgres
createdb testgis
createlang plpgsql testgis
psql -d testgis -f /usr/local/pgsql/share/contrib/lwpostgis.sql
psql -d testgis -f /usr/local/pgsql/share/contrib/spatial_ref_sys.sql
psql -d testgis -f /usr/share/postlbs/routing_core.sql
psql  -d testgis -f /usr/share/postlbs/routing_core_wrapper.sql
psql -d testgis -f /usr/share/postlbs/routing_tsp.sql
psql  -d testgis -f /usr/share/postlbs/routing_ts¯wrapper.sql
psql  -d testgis -f /usr/share/postlbs/routing_dd.sql
psql -d testgis -f /usr/share/postlbs/routing_dd_wrapper.sql

Example of query, export in kml and view using Google MAPS API

First create a table
BEGIN;

DROP TABLE IF EXISTS shortest_path_astar_table;

CREATE TABLE shortest_path_astar_table(gid int4) with oids;

SELECT AddGeometryColumn( 'shortest_path_astar_table', 'the_geom', 4326, 'MULTILINESTRING', 2 );

INSERT INTO shortest_path_astar_table(the_geom) 
  SELECT Transform(SetSrid(r.the_geom,27572),4326) AS the_geom FROM shortest_path_astar(
  'SELECT id, source, target,x1,y1,x2,y2,cost,reverse_cost,to_cost,rule from routing',
  (SELECT  source FROM routing WHERE id=12580 LIMIT 1),
  (SELECT  target FROM routing WHERE id=7763 LIMIT 1),
   true,true) x(v,e,c) JOIN routing r ON  (r.id=x.e);

END;
Export it using ogr2ogr
ogr2ogr -f KML /var/www/test1.kml PG:'host=localhost dbname=routing_db user=postgres password=***' -sql "select * from shortest_path_astar_table"
Then Using a script like
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
    <title>Google Maps JavaScript API Example</title>
    <script src="http://maps.google.com/maps?file=api&v=2&key=YOUR_GOOGLE_MAP_KEY_HERE"
      type="text/javascript"></script>
    <script type="text/javascript">

    //<![CDATA[

    function load() {
      if (GBrowserIsCompatible()) {
        var map = new GMap2(document.getElementById("map"));
        map.setCenter(new GLatLng(43.6324576574883,3.8418567112324), 14);
var gx = new GGeoXml("http://www.davidgis.fr/test1.kml");

map.addOverlay(gx);
      }
    }

    //]]>
    </script>
  </head>
  <body onload="load()" onunload="GUnload()">
    <div id="map" style="width: 1000px; height: 600px"></div>
  </body>
</html>


You will have the following image

mercredi 16 juillet 2008

Week-end de 3 jours bien mérité , et mizik créol' la Réunion de youtube

Ce week-end du 14 juillet a vraiment été le bienvenu http://www.davidgis.fr/img/smiley/Happy.png.

J'ai profité de ce lundi pour parfaire la démo en flash (en utilisant Ming) pour A*. Aujourd'hui j'ai profité d'appeler la famille à la Réunion pour voir où en sont les préparatifs du mariage; Tout va pour le mieux (tant mieux http://www.davidgis.fr/img/smiley/Kind.png!). Ca fait du bien de prendre des nouvelles fraîches de la famille vu que le grand jour approche à grand pas. Ce petit coup de téléphone a bien aiguailé ma journée .

Ces temps-ci au boulot dans les oreilles c'est les chansons de Ousanousa que j'arrête pas d'écouter (pompé sur youtube en utilisant un add-on de FireFox qui extrait la musique en flv et reconvertie en mp3 par ffmpeg http://www.davidgis.fr/img/smiley/Teeth.png). Ca fait bizarre quand j'ai ma mère au téléphone j'ai l'impression qu'elle est juste à côté de moi.

Sûrement que le fait d'être à Antibes/Juan-Les-Pins me rappelle un peu quelque part la Réunion. Mais c'est qui est vraiment prenant c'est de lire les commentaires http://youtube.com/watch?v=LMRjwnLge-M&feature=related ca fait vraiment trop plaize et donne envie de rentrer! Té ouai té.

A ousanousava et les zot avec ca fait vraiment trop plaisir http://www.davidgis.fr/img/smiley/Touched.png!J'ai trouvé quand même le temps entre deux test en SQL pour convertir tout ça. Le boug lé bon té pou fé son travail ek' son band' z'affair mizik http://www.davidgis.fr/img/smiley/SunGlasses.png!!! Y'a un de mes vieux ptes de fac (Yannick) qui serait content je pense de voir ce que je suis devenu grâce à lui par rapport à toutes mes soirées passer à l'IREMIA (salle informatique la fac des sciences de la Réunion) entre 1996-2001 . Une fameuse salle que j'ai lontemps squatté de mon DEUG à ma maîtirise de maths . C'est ce boug qui m'a appris à me démerder sous GNU/Linux.

Ah en parlant musique, y'a même un collègue de bureau qui a été à la Réunion qui doit me ramener un CD de Basse Terre http://www.davidgis.fr/img/smiley/Wink.png. Ca lé bon mounwar! Ca me permettra d'agrandir ma collection

Sur les coups de 23h00 ce soi, je suis allé prendre à la température de Juan en prenant un verre au Tché avant de rentrer me couche!r

mardi 15 juillet 2008

Flash demo for A* (astar) using Ming

English version

A demo for A* is available at http://www.davidgis.fr/test/roads.php. It was done using Ming 0.4.0 beta 5.

Français

Pour conclure la série sur pgrouting 1.02, une petite démo en ligne est disponible à http://www.davidgis.fr/test/roads.php

Elle a été réalisée à partir de Ming 0.4.0 beta5. Ceci concerne la fonctionnalité A* de pgrouting.

lundi 14 juillet 2008

Chaudes journées mais agréable fraîcheur en soirée sur Juan pour la semaine du 7 juillet

Oh non pour une fois je ne me plaindrais pas du temps que j'ai eu la semaine du lundi 7 juillet au dimanche 13. En soirée tous les soirs de la semaine, il a fait agréablement bon en soirée! Ni trop froid ni trop chaud, un temps idéal pour sortir comme je les aime

Contrairement aux nuits chaudes de la semaine précédente, j'ai dormi d'un trait tous les soirs de cette semaine avec une certaine difficulté je l'avoues à quitter mon matelas le matin. Résultat des courses: arrivée assez tardive au boulot cette semaine ...sauf vendredi matin où pour la première fois - et fait si rarissime que celà vaut bien un billtet sur le blog - j'ai été le premier à être arrivé à mon bureau ..y'avait personne vers 8h45

Cette semaine en rentrant du taf, je me susi habitué à m'arrêter au quai sud d'Antibes, histoire de prendre un café et laisser les voitures passer. En effet madi, mercredi et jeudi, il y avait beaucoup de circulation par rapport aux semaines précédentes à la sortie de Sophia vers 19h30~20h30

Pour faire suite à mon précédent billet, où il fut question du repas de la soirée avec rougail saucisse, riz et haricos rouges, une bonne heure et demi a été nécessaire avant de décoller pour rejoindre mes connaissances du Tché! Je suis arrivé sur place vers 2h00 du matin.

Sur place, comme d'hab, discut' avec une gadjique j'ai rencontré qui m'a offert un verre! La gadji en question est une charmante dame de la région de Bordeaux qui est arrivée comme moi récemment sur la région. En discutant on en ait arrivé à la même constatation. On dirait qu'ici il faut attendre vraiment les 1h00~2h00 du matin pour voir les gens vraiment se lacher. Comme s'il y avait une certaine heure réglementaire pour se lâcher ..LOL..Mais bon chaque région ses us et coutumes. Ca m'a fait du bien de sortir! Un peu de relax parfois ca motive

Dimanche pas bougé de la villa sauf pour mon rituel au café du coin! Le mieux ca a été vers 20h20 pour matter un épisode de Zorro. Episode certes vu et revue mais celà n'enlève rien quant au plaisir de revoir quelque chose qui vous rappelle votre tendre jeunesse !

Lundi c'est jour férié: au programme café au bar du coin, bouffe et dodo ! Pas plus ni moins !