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

2012-03-05 Par sujet Christian Quest
Afin de favoriser la réutilisation, je voudrais mettre en place des
exports SVG à thème si possible automatiques.

Par exemple, le découpage des régions ou départements, voire le
découpage par commune pour chaque département.

Pourquoi du SVG ? Tout simplement pour que des graphistes, souvent
demandeurs de fonds de carte puissent s'en servir le plus facilement
possible.

J'ai un peu joué avec ST_AsSVG pour sortir des path à la sauce SVG, et
je me suis bricolé un fichier SVG pour voir leur format.

Est-ce que vous avez déjà fait ce genre de choses ?
-- 
Christian Quest - OpenStreetMap France - http://openstreetmap.fr/u/cquest

___
dev-fr mailing list
dev-fr@openstreetmap.org
http://lists.openstreetmap.org/listinfo/dev-fr


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

2012-03-05 Par sujet Yves
Non, mais mapnik sors du svg aussi je crois.
Yves


Christian Quest cqu...@openstreetmap.fr a écrit :

Afin de favoriser la réutilisation, je voudrais mettre en place des
exports SVG à thème si possible automatiques.

Par exemple, le découpage des régions ou départements, voire le
découpage par commune pour chaque département.

Pourquoi du SVG ? Tout simplement pour que des graphistes, souvent
demandeurs de fonds de carte puissent s'en servir le plus facilement
possible.

J'ai un peu joué avec ST_AsSVG pour sortir des path à la sauce SVG, et
je me suis bricolé un fichier SVG pour voir leur format.

Est-ce que vous avez déjà fait ce genre de choses ?
-- 
Christian Quest - OpenStreetMap France - http://openstreetmap.fr/u/cquest

_

dev-fr mailing list
dev-fr@openstreetmap.org
http://lists.openstreetmap.org/listinfo/dev-fr

___
dev-fr mailing list
dev-fr@openstreetmap.org
http://lists.openstreetmap.org/listinfo/dev-fr


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

2012-03-05 Par sujet Christian Quest
Mapnik pour sortir juste les limites des régions et départements, ça
me semble violent et c'est la construction du SVG pour avoir des
éléments graphiques faciles à manipuler par un graphiste qui
m'intéresse.

Là j'explore comment joindre les petits bouts de way qui forment la
frontière entre 2 régions (ou département) et en faire un LINESTRING
unique via mes requêtes postgis qui vont bien.


Le 5 mars 2012 16:55, Yves yve...@gmail.com a écrit :
 Non, mais mapnik sors du svg aussi je crois.
 Yves


 Christian Quest cqu...@openstreetmap.fr a écrit :

 Afin de favoriser la réutilisation, je voudrais mettre en place des
 exports SVG à thème si possible automatiques.

 Par exemple, le découpage des régions ou départements, voire le
 découpage par commune pour chaque département.

 Pourquoi du SVG ? Tout simplement pour que des graphistes, souvent
 demandeurs de fonds de carte puissent s'en servir le plus facilement
 possible.

 J'ai un peu joué avec ST_AsSVG pour sortir des path à la sauce SVG, et
 je me suis bricolé un fichier SVG pour voir leur format.

 Est-ce que vous avez déjà fait ce genre de choses ?
 --
 Christian Quest - OpenStreetMap France - http://openstreetmap.fr/u/cquest

 

 dev-fr mailing list
 dev-fr@openstreetmap.org
 http://lists.openstreetmap.org/listinfo/dev-fr


 ___
 dev-fr mailing list
 dev-fr@openstreetmap.org
 http://lists.openstreetmap.org/listinfo/dev-fr




-- 
Christian Quest - OpenStreetMap France - http://openstreetmap.fr/u/cquest

___
dev-fr mailing list
dev-fr@openstreetmap.org
http://lists.openstreetmap.org/listinfo/dev-fr


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

2012-03-05 Par sujet didier2020
Le lundi 05 mars 2012 à 16:52 +0100, Christian Quest a écrit :
 Afin de favoriser la réutilisation, je voudrais mettre en place des
 exports SVG à thème si possible automatiques.
 
 Par exemple, le découpage des régions ou départements, voire le
 découpage par commune pour chaque département.
 
 Pourquoi du SVG ? Tout simplement pour que des graphistes, souvent
 demandeurs de fonds de carte puissent s'en servir le plus facilement
 possible.
 
 J'ai un peu joué avec ST_AsSVG pour sortir des path à la sauce SVG, et
 je me suis bricolé un fichier SVG pour voir leur format.
 
 Est-ce que vous avez déjà fait ce genre de choses ?
pas comme cela
http://wiki.openstreetmap.org/wiki/Osmarender




___
dev-fr mailing list
dev-fr@openstreetmap.org
http://lists.openstreetmap.org/listinfo/dev-fr


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

2012-03-05 Par sujet Philippe Verdy
Même sans aller jusqu'à la production d'un SVG complet, on peut se
contenter de générer les chaînes à mettre en valeur de l'attribut d
d'un élément path SVG. Ces chaines peuvent être arbitrairement
longues toutefois, mais la base OSM suggère de limiter ses way à
1000 nœuds, une limite suffisante pour la plupart des moteurs SVG
(même si certains ne sont pas réellement limités et acceptent des
longueurs réellement très longues)

un microformat SVG réduit au strict minimum donc, ne contenant ni
style, juste la déclaration du bounding-box pour régler ses views, et
autant d'éléments path que nécessaires, qui peuvent avoir un id
identique à l'id interne de la base (préfixé de way-), inclus dans
un élément defs, puis des groupes g reprenant les relations (id
identique à la base OSM préfixé de rel-) dont le contenu serait les
path use=way-*/.

A charge ensuite des auteurs de cartes d'ajouter les styles qu'ils
veulent dans les SVG. Les SVG est assez volatile pour permettre de
telles représentations.

Mais certains voudront aussi les libellés (il faudrait un filtre par
langue). D'une façon générale, plus on mettra d'options et plus on se
retrouvera à faire ce que font déjà les moteurs de rendus de tuiles
(même si ici ce seront des tuiles de taille variable, et au format SVG
et non converti en raster PNG ou JPG).

Le 5 mars 2012 16:52, Christian Quest cqu...@openstreetmap.fr a écrit :
 Afin de favoriser la réutilisation, je voudrais mettre en place des
 exports SVG à thème si possible automatiques.

 Par exemple, le découpage des régions ou départements, voire le
 découpage par commune pour chaque département.

 Pourquoi du SVG ? Tout simplement pour que des graphistes, souvent
 demandeurs de fonds de carte puissent s'en servir le plus facilement
 possible.

 J'ai un peu joué avec ST_AsSVG pour sortir des path à la sauce SVG, et
 je me suis bricolé un fichier SVG pour voir leur format.

 Est-ce que vous avez déjà fait ce genre de choses ?
 --
 Christian Quest - OpenStreetMap France - http://openstreetmap.fr/u/cquest

 ___
 dev-fr mailing list
 dev-fr@openstreetmap.org
 http://lists.openstreetmap.org/listinfo/dev-fr

___
dev-fr mailing list
dev-fr@openstreetmap.org
http://lists.openstreetmap.org/listinfo/dev-fr


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

2012-03-05 Par sujet Christian Quest
Pour info, voici ce que j'ai généré semi automatiquement:

- Régions: http://dl.free.fr/rDOk78z6V (512Ko)
- Départements: http://dl.free.fr/fH1iEGWq9 (823Ko)

Oui, j'ai bien utilisé ST_Simplify pour alléger, avec une
simplification à 50m et j'arrondis les coordonnées dans ST_AsSVG à 1m
près.

Dans chaque fichier, le tracé unique, ce qui le rend peut utilisable
par un graphiste, d'où ma recherche des frontières entre 2 régions ou
département pour créer path pour chaque frontière.

Les solutions de type OSMarender, Mapnik ne sont malheureusement pas
adaptées pour une réutilisation graphique.

___
dev-fr mailing list
dev-fr@openstreetmap.org
http://lists.openstreetmap.org/listinfo/dev-fr


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

2012-03-05 Par sujet Christian Quest
Le 5 mars 2012 17:45, Marc SIBERT m...@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 ?

Tu refais un traitement pour calculer le viewbox du SVG ou du prends
les xmin/xmax/ymin/ymax ?

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é).

-- 
Christian Quest - OpenStreetMap France - http://openstreetmap.fr/u/cquest

___
dev-fr mailing list
dev-fr@openstreetmap.org
http://lists.openstreetmap.org/listinfo/dev-fr


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

2012-03-05 Par sujet Philippe Verdy
Le 5 mars 2012 18:05, Christian Quest cqu...@openstreetmap.fr a écrit :
 Pour info, tu peux alléger le SVG de 3 façons:
 - faire des arrondis sur les coordonnées

Attention aux arrondis, ils doivent être conformes à la simplification
effectuée qui dépend du niveau de zoom calculé

 - utiliser des déplacements relatifs dans les path

Il peut être plus pratique, dans le cadre d'une réutilisation, de
continuer à utiliser des coordonnées absolues, à condition de déplacer
seulement l'origine. Ca simplifie le travail ultérieur de
réutilisation des cartes au cas où on voudrait les fusionner ou les
rescinder. Car on a rarement besoin des 7 chiffres de précision sur
une même carte qui ne s'affichera en fin de compte que dans un
rectangle d'au mieux 2000x1000 pixels sur les meilleurs écrans. La
précision supplémentaire ne servant que si on zoome le SVG pour voir
certains détails qui autrement n'occupent qu'un seul même pixel.

 - 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é).

Là tu es optimiste. En fait les SVG que je manipule ont près de 90% de
la taille occupée par la définition des paths, même en cas de
réutilisation par référence (j'utilise une extension SVG permettant de
faire une référence à un même chemin dont on a inverse la direction si
besoin, mais tous les moteurs SVG ne le permettent pas, et si on veut
un SVG compatible TinySVG, il n'y a pas d'autre choix que de
réénumérer les chemins partagés pour des polygones séparés mais
jointifs).

Et je ne me contente pas de ce que produisent les outils, en fin de
compte je me retrouve à éditer les SVG dans un éditeur de texte, où
des tas de simplifications sont possibles aussi (en général sur les
styles, surtout si la carte a été manipulée par un éditeur de SVG
générique comme Sodipodi). Cet édition manuelle réduit la taille
souvent de plus de la moitié, parfois beaucoup plus, sans même rien
faire perdre à leur précision, et cela simplifie aussi énormément leur
réutilisation (par exemple pour produire des séries de cartes dérivées
en modifiant seulement quelques règles de style CSS !

___
dev-fr mailing list
dev-fr@openstreetmap.org
http://lists.openstreetmap.org/listinfo/dev-fr


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

2012-03-05 Par sujet Christian Quest
Le 5 mars 2012 18:23, Philippe Verdy verd...@wanadoo.fr a écrit :
 Le 5 mars 2012 18:05, Christian Quest cqu...@openstreetmap.fr a écrit :
 - 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é).

 Là tu es optimiste. En fait les SVG que je manipule ont près de 90% de
 la taille occupée par la définition des paths, même en cas de
 réutilisation par référence (j'utilise une extension SVG permettant de
 faire une référence à un même chemin dont on a inverse la direction si
 besoin, mais tous les moteurs SVG ne le permettent pas, et si on veut
 un SVG compatible TinySVG, il n'y a pas d'autre choix que de
 réénumérer les chemins partagés pour des polygones séparés mais
 jointifs).


Je parlais du fichier généré par Marc. L'as-tu ouvert pour voir son contenu ?
C'est ce que j'ai fait pour me familiariser un peu plus avec le format SVG.

Chaque way OSM semble avoir généré un path avec à chaque fois le
fill, le stroke, et le stroke-width, même si le path en question ne se
compose que de 2 points. Ca marche, le SVG est correct mais bien lourd
à cause de ces répétitions.

Dans le SVG que j'ai généré, j'ai mis tout mes ways dans un seul
path SVG (c'est radical).
C'est bien plus compact, voire trop au final pour le graphiste dans
son éditeur (je doute fortement qu'il ouvre un jour la version texte
du fichier SVG sauf par erreur)... d'où ma recherche actuelle des
frontières pour ne pas avoir un unique path et ne pas en avoir une
multitude.

-- 
Christian Quest - OpenStreetMap France - http://openstreetmap.fr/u/cquest

___
dev-fr mailing list
dev-fr@openstreetmap.org
http://lists.openstreetmap.org/listinfo/dev-fr


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

2012-03-05 Par sujet Philippe Verdy
Le 5 mars 2012 21:12, Marc Sibert m...@sibert.fr a écrit :
 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à).

Note tout de même la limite de portée de la compression de type LZW :
si les chemins répétés sont assez éloignées, il seront sortis depuis
longtemps du dictionnaire LZW et la répétition ne sera pas détectée.
(les tailles de dictionnaires de recherche de répétitions sont
limitées pour ne pas avoir à assigner trop de bits pour chaque
nouvelle entité représentée par un même code, et il n'est pas
envisageable d'avoir un dictionnaire de compression ou de
décompression qui fasse la taille de n'importe quel fichier dépassant
plus de 64 Ko : on a toujours une fenêtre limitative pour ce type de
recherches faite par le compresseur, pour des raisons de performance,
et pour le stockage du dictionnaire dans le décompresseur, qui lui
aussi ne va pas garder tout le texte décompressé nécessairement en
mémoire pour retrouver la séquence à répéter).

La compression reprendra donc dans l'état du dictionnaire au moment où
chaque chaîne commence, et en gros chaque répétition aura grosso-modo
la même taille compressée.

___
dev-fr mailing list
dev-fr@openstreetmap.org
http://lists.openstreetmap.org/listinfo/dev-fr


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

2012-03-05 Par sujet Vincent Pottier

Le 05/03/2012 21:12, Marc Sibert a écrit :
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),

Bien sur ! cette sorte de css est du pur css !
http://tutorials.jenkov.com/svg/svg-and-css.html
--
FrViPofm

___
dev-fr mailing list
dev-fr@openstreetmap.org
http://lists.openstreetmap.org/listinfo/dev-fr


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

2012-03-05 Par sujet Christian Quest
Ca y est, j'ai trouvé pour regrouper mes ways par frontière...

SELECT 
st_assvg(st_simplify(st_transform(st_linemerge(st_collect(linestring)),2154),25),1,0)
as svg
FROM
(SELECT w.id, min(r.id) as r1, max(r.id) as r2
FROM relations r
JOIN relation_members m ON (m.relation_id=r.id)
JOIN ways w ON (w.id=m.member_id)
WHERE m.member_type='W'
AND r.tags ? 'type'
AND r.tags-'admin_level'='6'
AND r.tags-'boundary'='administrative'
AND r.tags-'type'='boundary'
AND r.tags-'ref_NUTS' LIKE 'FR%'
GROUP BY w.id) AS w
JOIN ways ON (w.id=ways.id)
GROUP BY r1,r2;

___
dev-fr mailing list
dev-fr@openstreetmap.org
http://lists.openstreetmap.org/listinfo/dev-fr