[OSM-dev-fr] Générer des fichiers SVG par script...
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...
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...
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...
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...
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...
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...
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...
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...
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...
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...
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...
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