A noter que ce serait pas mal que Mapnik supporte directement dans ses feuilles de style XML la possibilité de préciser le côté de l'épaisseur de ligne qu'on veut afficher (par défaut il affiche les deux côtés, moitié-moitié à cheval sur le ligne virtuelle), on devrait pouvoir indiquer une option "both" (valeur par défaut actuelle), "inner" ou "outer" (pour ne représenter que la moitié interne ou externe du polygone), ou "left" ou "right" (en fonction du sens de parcours, sur les éléments linéaires non surfaciques).
Le code ci-dessus (qui étend le clipping de la moitié de l'épaisseur de ligne pourqu'elle reste visible en totalité) devrait être désactivé si on ne représente que la partie interne, et dans ce cas il suffirait de mettre clip=false dans l'attribut de style de ligne (mais cela a un effet de bord car il n'est pas fait pour que pour ça). Intérêt: pouvoir afficher aussi le long d'une route un coté "remarquable" comme sur les cartes Michelin pour les routes touristiques, ou pour créer des ombres autour de bâtiments à mettre en valeur (mais pas dedans). Ou encore pour marquer les bons côtés où il y a une piste cyclable, une voie de bus, ou du stationnement autorisé, ou le côté où il y a une barrière de sécurité, ou un fossé. Le 9 juin 2013 19:52, Philippe Verdy <verd...@wanadoo.fr> a écrit : > Et en pratique ce support est intégré dans le LineSymbolizer: > > > if (sym.clip()) > > { > > double padding = (double)(query_extent_.width()/width_); > > double half_stroke = stroke_.get_width()/2.0; > > if (half_stroke > 1) > > padding *= half_stroke; > > if (std::fabs(sym.offset()) > 0) > > padding *= std::fabs(sym.offset()) * 1.2; > > padding *= scale_factor_; > > clipping_extent.pad(padding); > > } > > > voir https://github.com/mapnik/mapnik/blob/master/src/cairo_renderer.cpp > > Bref on fait le rendu avec les attributs offset et width donnés dans la > feuille de style pour le LineSymbolizer, le reste c'est le rendu PNG de > Cairo (ou le rendu en SVG) qui se débrouille pour calculer les buffers > corrects (et je pense même que ce sera bien plus performant que tes > symboles marqueurs en répétés en "pattern" sur une distance de 1 pixel le > long d'une ligne, la technique qui ne sert en pratique qu'à dessiner les > triangles le long des traits de falaises à distance régulière). > > Peut-être qu'il faut bidouiller le code C++ de Mapnik pour activer la > bonne combinaison d'options, mais tout y est pour supporter ça, et ensuite > pouvoir l'utiliser dans la feuille de style XML. > >
_______________________________________________ Talk-fr mailing list Talk-fr@openstreetmap.org http://lists.openstreetmap.org/listinfo/talk-fr