[OSM-dev-fr] Générer des fichiers SVG par script...

Marc Sibert marc at sibert.fr
Lun 5 Mar 20:12:29 GMT 2012


Le 05/03/2012 18:05, Christian Quest a écrit :
> Le 5 mars 2012 17:45, Marc SIBERT<marc at sibert.fr>  a écrit :
>> Bonjour,
>>
>> J'arrive un peu tard, j'ai déjà regardé de ce côté justement pour faire des
>> cartes de contours. Évidemment, comme j'aime réinventer la roue, je suis
>> passé par ma base SQLite / Spatialite perso et ça me permet de générer ça
>> par exemple : http://freeroute.fr/?p=107
>>
>> L'article inclut les commandes SQL qui génèrent le SVG. Bien que le schéma
>> de BDD soit surement différent du tien, le principe doit rester similaire
>> d'une base à l'autre.
>>
>> A ta dispo pour en parler.
>
> Le principe reste le même même si la BDD en dessou n'est pas exactement la même.
> Dans mon cas, j'utilise un schéma osmosis pour justement pouvoir
> regénérer les objets graphiques à ma convenance.
> Le schéma osm2pgsql est adapté à Mapnik et les objets sont déja
> prémoulinés pour Mapnik.
>
> Tu as choisi quoi comme projection ?
Un lambert sur la France entière : le 93 dans mon exemple.
>
> Tu refais un traitement pour calculer le viewbox du SVG ou du prends
> les xmin/xmax/ymin/ymax ?
la view box est fixe dans mon exemple simpliste et définie par 
tâtonnements. Un calcul de BBOX nécessite de faire les calculs plusieurs 
fois surtout si tu restes en full-sql, si tu scriptes, tu peux garder 
des résultats intermédiaires pour accélérer le calcul de la BBOX
>
> Pour info, tu peux alléger le SVG de 3 façons:
> - faire des arrondis sur les coordonnées
> - utiliser des déplacements relatifs dans les path
> - regrouper les path similaire (ça évite de répéter path fill stroke
> stroke-width qui représente pas loin de 50% du SVG généré).
Je pense que l'on peut gagner en factorisant les types : il doit bien y 
avoir une sorte de CSS du SVG (pas de souvenirs), sinon le SVG qui est 
du XML qui est du texte est éligible à la compression de répétition de 
séquences (algo LZW) et surement un bon client (50% et au-delà).

Pour tronquer un peu les coordonnées, une fois en Lambert93, les entiers 
suffises : l'unité est mètres !

A+

-- 
Marc Sibert
marc at sibert.fr




Plus d'informations sur la liste de diffusion dev-fr