← Retour aux issues

Afficher les leisure=track

publié le , mis à jour
Avatar Codeberg de etienneJretienneJr

Comme remarqué par @pmiossec ici https://codeberg.org/cartes/web/pulls/2076#issuecomment-14629809

On ne voit pas les pistes de vélo dans cartes

Ex (2 que je connais):

https://www.openstreetmap.org/relation/6630051

https://cartes.app/#17.88/48.795974/2.329038/-7.2

Et:

https://www.openstreetmap.org/way/1214069467

https://cartes.app/?style=hybrid#18.38/48.787582/2.334203

PS: je n'omet pas l'idée quelles soient mal mappées dans OSM (car y'en a une, je viens de (re)découvrir, c'est moi qui l'ait créée 😅)

Ils sont bien dans les tuiles, mais toujours en Polygon, il va falloir modifier pour différencier ceux tagués en aire (le premier) de ceux taggés en linéaire (le 2e).

https://pmtiles.io/#url=https%3A%2F%2Fserveur.cartes.app%2Fpmtiles%2Fplanet.pmtiles&map=19.76/48.7873628/2.3341778

  1. Avatar Codeberg de alexandreGalexandreG

    J'ai commencé à travailler ce sujet dans les styles. Comme on peut le voir ci-dessous, ça fonctionne bien pour les multipolygon (la piste de l'hippodrome) mais pas pour les linéaires (la piste de vélo qui fait le tour). Par contre je ne sais pas exactement comment modifier les tuiles pour différencier ces deux types d'objets.

    Capture d’écran 2026-11-09 à 20.42.15

  2. Avatar Codeberg de etienneJretienneJr

    @alexandreG c'est le même cas que les zones piétonnes : certaines sont des polygones et d'autres sont des lignes. Pas besoin de modifs dans les tuiles, il faut prevoir 2 layers de styles différents, en filtrant avec ['==', ['geometry-type'], 'Polygon'] ou LineString : https://codeberg.org/cartes/web/src/branch/master/app/styles/base.ts#L1269-L1335 (attention, dans cet exemple, la syntaxe ['==', '$type', 'LineString'], utilisée dans le filtre du layer Pedestrians ways est dépréciée, il vaut mieux utiliser la version ci-dessus.

  3. Avatar Codeberg de alexandreGalexandreG

    @etienneJr Quand je regarde dans les tuiles, la piste de l'hippodrome et la piste de vélo sont toutes les 2 en Polygon, ce qui rejoint ton commentaire initial non ? Comment les différencier dans ce cas ?

    @etienneJr wrote in https://codeberg.org/cartes/web/issues/2145#issue-4958772:

    Ils sont bien dans les tuiles, mais toujours en Polygon, il va falloir modifier pour différencier ceux tagués en aire (le premier) de ceux taggés en linéaire (le 2e).

    Piste de l'hippodrome Piste de vélo
    image image
  4. Avatar Codeberg de etienneJretienneJr

    @alexandreG wrote in https://codeberg.org/cartes/web/issues/2145#issuecomment-27551487:

    ce qui rejoint ton commentaire initial non ?

    ah mazette, non seulement je ne me souviens plus de mes commentaires, mais en plus je ne les relis même pas, désolé de t'avoir fait perdre du temps avec ça.

    Donc en effet il faut modifier la génération des tuiles. Par défaut la distinction Line VS Polygon se fait en testant si le way est fermé ou non, avec Is_Closed() local is_closed = IsClosed() https://codeberg.org/cartes/serveur/src/branch/master/tilemaker/resources/process-openmaptiles.lua#L645 puis l'info est transmise à Layer("aeroway", is_closed) lors de l'ajout de l'élément dans le layer de données.

    Mais on peut rajouter d'autres tests sur les tags pour mieux différencier, par exemple local is_area = (public_transport == "platform" or Find("area") == "yes" or Holds("area:highway") or IsMultiPolygon() ) and is_closed https://codeberg.org/cartes/serveur/src/branch/master/tilemaker/resources/process-openmaptiles.lua#L880

    Ici, on pourrait dire que un way tagué leisure=track doit toujours être un LineString même si il est fermé ? Faut trouver à quel endroit est appelé Layer() pour les leisure et adapté is_closed/is_area.

    ça te suffit comme info ?


✏️ Participer à la discussion